The thing is, if you want to come up with some absolute standard of when a performance hit is too much, you have to make way too many assumptions to do so. A slow user on a fast system will need all the help he can get - while a fast user on a slow system is going to want to throttle you if the computer seizes up trying to do searches and display suggestions when he knew what he wanted. There are going to be a whole continuum of use cases and explicitly tuning for one spot on the spectrum detunes all the others.
Simply waiting for a break in the input before triggering (and thus not triggering at all when input is fast and complete) gives you a kind of autotune for all kinds of cases. I am not talking about a long pause, just a momentary hesitation. Even on a new computer a fast typist can sometimes get ahead of the display, and on a slow machine it isnt hard at all to do that. Once it's all caught up and hits an idle loop, you can worry about whether it might make sense to make a suggestion.