It sounds like you are writing a script to iterate through all domains and run "where-used" on some global object to see which domains are using it and how. Indeed, publishing on every domain will slow things down, so it should be avoided. However, that is not the only way to speed things up...
Starting from API version 1.7, there is a new parameter to the "where-used" command called "domains-to-process". If you log into the System Domain and run the where-used from there, then you can pass domains-to-process = ALL_DOMAINS_ON_THIS_SERVER. That will run an efficient where-used calculation on all domains on this server.
The internal query leverages indexes that span domains and is much more efficient than iterating over domains and doing a separate where-used on each one.
This functionality is also available in SmartConsole starting from R81 in the System domain. It comes with another feature called cross-domain search that lets you find object definitions across domains (not just where-used).
** If you have multiple MDS servers with different active domains, you should run it once per server.
** You mentioned that you are using API version 1.6, so this might not be accessible to you, but it's worth sharing for the general population and of course will be useful for you once you upgrade