# Does the word "efficient" usually refer to polynomial time or polylogarithmic time?

This question is strictly about terminology.

I'm not an expert in CS, but I've almost always seen the word "efficient" applied to an algorithm to mean "of polynomial runtime". E.g. this question and the Wikipedia article on computational complexity theory use the word in that way.

However, other sources (e.g. the Wikipedia articles on NC and P-complete) reserve the word "efficient" for algorithms with polylogarithmic runtimes and use "tractable" for algorithms with polynomial runtimes.

This conflicting terminology is obviously confusing. Of course, any (good) formal discussion of algorithmic complexity will precisely define its terminology, but in general, are either of the two usages above clearly more conventional than the other? If someone uses the term "efficient" in an informal discussion of computational complexity without defining it, is it more likely that they mean "polynomial time" or "polylogarithmic time"?