跳转到内容

优化代码速度/通过减少功能集优化

来自维基教科书,开放的书籍,开放的世界

"天下没有免费的午餐"。你的程序功能越多,实现它们所需的代码就越多,反过来会消耗更多内存,并减慢速度。此外,它需要更多条件语句,甚至循环,这也需要额外的处理。因此,通过从应用程序中删除功能,可以使代码更快。

例如,在 "微软是如何输掉 API 战争的" 中,Joel Spolsky 讲述了微软为了维护其 Windows 操作系统系列的 bug 到 bug(二进制)向后兼容性付出了巨大的努力。结果,依赖于 API quirks(这些 quirks 发生了改变)的错误软件,通常仍然可以在 Windows 的更高版本中工作,因为微软确保 Windows 为它们提供了类似的环境。由于维护了所有这些向后兼容性,微软产品中的代码更多,这可能导致了它们在每次发布中都变慢这一普遍而臭名昭著的看法。

通过引入错误进行优化

[编辑 | 编辑源代码]

此外,我们可以说,通常 bug 修复(例如边界检查、健全性检查等)会对程序的性能产生负面影响,因此不修复这些 bug 或引入新的 bug 也是一种可能的优化方式(但不是一个非常推荐的方式)。

通过牺牲安全进行优化

[编辑 | 编辑源代码]

我可以更进一步,并声称,通常可以通过牺牲代码的安全来优化代码。代码的健全性检查、输入检查等越少,运行速度就越快。例如,一个没有进行大量动态内存分配调用(在没有进行管理式编程的 C 等语言中)失败检查(以及优雅处理)的代码,例如malloc(),将运行得更快。(直到它运行到内存不足并崩溃为止。)

我在某个地方读到过 程序员抱怨,检查和处理程序中的错误需要他们编写大约 4 倍的代码,这是有道理的。当一切按预期运行时,所有这些代码都会减慢程序速度。

请注意,“前方有危险”。为了提高速度而牺牲安全可能永远不是一个好主意。但我在这里提到了它,为了完整起见。

华夏公益教科书