这将取决于上下文。
我通常会看到“修复二次运行时性能错误”。但是,是否值得修复(代码更改)取决于上下文。
请记住,数据库提供了许多工具来改善时间复杂度。例如,要从数据库中获取前N个结果,就这么说。将低效的kudge转换为内置的优化调用时,解释似乎是多余的。
我认为具有二次运行时间的算法值得代码审查(讨论)的原因并不是因为它慢(相对慢;相对于指数而言二次快),而是因为人类的直觉(例如您的客户或程序员对软件功能的天生不满意,因为它们对日常生活的期望不一而足,它偏离线性运行时的时间过长。
许多客户对软件性能的抱怨属于以下两类:
因此,如果两个都成立,那么客户将认为执行时间是一个错误:
- 比线性慢
- 引人注目(即,在给定典型任务大小的情况下,属于人类时间范围(大于秒或分钟))
解释二次运行时算法不会造成问题的合法参数(即,不应该更改代码):
- 通常由这个二次运行时函数处理的任务的大小是有限的
- 给定典型的大小范围,实际(绝对)执行时间仍然足够小,可以忽略
- 如果用户实际尝试提交的任务足够大以至于无法引起注意,则该用户将收到一条消息,提示运行时间长
- 系统的用户都是专家,因此他们知道自己在做什么。例如,API的用户应阅读API文档上的细则。
实际上,许多对典型应用程序开发有用的算法要比线性算法慢(大多数情况下为O(N log N),如排序),因此,大型软件实际上将尝试通过仅对相关部分进行排序来解决该问题。数据,或使用直方图(统计)过滤技术来达到类似效果。
这适用于软件客户,但是如果您也将软件库或API函数的用户也视为“客户”,那么答案仍然适用。