我们是否已经失去了纯粹优化的艺术?
早期的工程师在极小的限制下工作。阿波罗制导计算机只有 2KB 的 RAM。每一比特都至关重要。每一个 CPU 周期都不可或缺。
如今,我们拥有数 GB 的内存。我们经常通过增加硬件来解决问题。如果代码运行缓慢或占用资源过多,我们就增加 RAM。这种习惯让我们失去了纯粹优化的技能。
通过思考约束条件,你可以编写出更好的软件。
看看你在 Python 中是如何处理大型文本文件的。
常见做法: 许多开发者会一次性将整个文件读入内存。
- 你使用
f.readlines()。 - 这会将每一行都加载到 RAM 中的一个列表中。
- 如果你的文件是 10GB,你就需要 10GB 的 RAM。
- 这种方法在小型服务器或受限设备上会失效。
优化做法: 一次处理文件的一行。
- 你直接遍历文件对象。
- Python 读取一行,处理它,然后移动到下一行。
- 你的内存占用保持在较低且恒定的水平。
- 无论文件是 1MB 还是 100GB,这都不成问题。
这种差异在于工程哲学。
增加更多资源只是权宜之计。它会产生脆弱的软件。利用约束条件来驱动设计则能创造出健壮的软件。
优化不仅仅关乎速度。它关乎对资源的审慎使用。
写代码时,问问自己:
- 这会占用多少内存?
- 如果数据增长十倍,它还能正常工作吗?
- 我是否在依赖昂贵的硬件来掩盖糟糕的代码?
更好的软件源于自律。
Source: https://dev.to/prabashanadev/have-we-lost-the-art-of-pure-optimization-31b9