Performance [Office 2003 SDK Documentation]
Smart tags are loaded when an application is idle, not necessarily when an application is started. That is why if you try to display the Smart Tags tab on the AutoCorrect dialog box immediately after you open a smart tag supporting application like Word, you may notice a delay before the Smart Tags tab is displayed. This is especially so if you have a lot of smart tag recognizers installed, because the recognizer list in the Smart Tags tab would need to be populated with the list of available recognizers installed and registered on a machine. (To display the Smart Tags tab, on the Tools menu, click AutoCorrect Options, and click Smart Tags tab.)
Smart tag recognizers run on a background thread, therefore they will not interfere with the user's ability to type or use the application. Text is passed from the application to these recognizers. The list of recognized text is held in memory while the smart tag is running.
Developers should not show a user interface directly from recognizer DLLs since there could be cross-thread synchronization issues with DLLs that show a user interface in a background thread. Showing a user interface promotes a thread's priority, and if a thread's priority is boosted, it might cause unexpected behavior later in the application session of Word, Excel, PowerPoint and Access.
In order to determine which text to smart tag first, Word uses an algorithm similar to the one used by the spell checker. Excel only checks for smart tag recognition once a cell as been committed. This means that text in the visible portion of a spreadsheet is given highest priority so that users are not left waiting on smart tags. In PowerPoint, smart tag recognition always starts from the first slide and will hit every shape/placeholder/textbox which hasn't been checked yet. Notes are then checked next, again starting from the first slide.
If there is more than one recognizer installed, the order in which they execute will be arbitrary. When possible, developers should avoid building recognizers that consistently rely on database connections or Web access as those may not always be available. If a recognizer that relies on this kind of functionality is running slowly, it may prevent other recognizers from running.