Surely using the Excel find is by far the fastest. You only need to see if the name is found once in any worksheet and exit as soon as it is. If the initial search range is usedrange.formula you reduce that to a minimum also as seen in examples above. You have to interact with the worksheet to load the array which is one interaction as is the Excel find but that is far faster than looping an array.
The only key reason for looping an array is perhaps because many of the names are hard to find. People use names like A or B or Sales of which there may be multiple entries in the workbook.
I overcame this by changing the name to something with a weird prefix like ZZXXZZ or such, then searching for that. If the name is not found then it can be deleted, if it is then restore its name again without the prefix.
In addition, to searching cells, you need to search, objects, pivottables, charts, conditional formats and data validations as names could all be used in these. I have had to process workbooks with several hundred thousand names whereby 99.99% were redundant. It is not fast but can be left to run overnight. As long as is it thorough and accurate and automated then slow should not really be an issue. Accuracy is more important.
Finally, with lots of names, your workbook may crash so you should build in autosaving every now and then. Statusbar is good for progress but use Mod to update it every X number of names as running on each loop will slow the process down and I add a comment suffix to each name that is in use so if you run in batches or it crashes then you can skip searching for those names again as you know they exist. easy to delete them once all done.