在慢速机器上开发是否过早优化?
我们应该慢慢发展,因为它会迫使我们尽早优化。
兰德尔海德在“过早优化的谬误”中指出,霍尔的报价有很多误解:
我们应该忘记小效率,大约97%的时间:过早优化是所有邪恶的根源。
特别是,尽管今天的机器比霍尔的时代更尖叫,但并不意味着“应该避免优化”。 当我建议我们应该以适度的速度发展时,我尊敬的同事也有一点意见吗? 这个想法是,性能瓶颈对慢速盒子更加恼人,所以他们很可能会受到关注。
慢速计算机不会帮助您找到性能问题。
如果您的测试数据只有表中的几百行,那么您的数据库将全部缓存,并且您永远不会发现写入错误的查询或不良的表/索引设计。 如果您的服务器应用程序不是多线程服务器,那么您将无法找到该服务器,除非您用500个用户对其进行压力测试。 或者如果应用程序瓶颈带宽。
优化是“一件好事”,但正如我对新开发人员所说的那样,他们对如何做得更好有各种各样的想法,“我不在乎你给我错误的答案有多快”。 先找到它,然后在找到瓶颈时加快速度。 一位经验丰富的程序员将开始设计并合理开发。
如果性能非常关键(实时?毫秒交易?),那么您需要设计和实施一套基准和工具,以科学地证明自己的变化使其变得更快。 有太多的变数会影响表现。
另外还有一个经典的程序员借口,他们会提出 - '但是它运行缓慢,因为我们故意选择了慢速的计算机,所以在部署它时运行速度会更快。“
如果你的同事认为它的重要性给了他一台很慢的电脑,并让他负责'表演':-)
这应该是社区wiki,因为它很主观,没有“正确”的答案。
也就是说,你应该开发可用的最快的机器。 是的,任何慢的都会带来刺激,并鼓励你修复减速,但价格非常昂贵:
作为一名程序员,你的工作效率直接关系到你能掌握的东西的数量,任何减缓你的过程或者阻碍你的东西都会延长你在短期内持有这些想法的时间 - 记忆,使得你更可能忘记他们,而且必须重新学习。
等待一个程序编译时,可以避免一堆bug,潜在问题和修复程序在你分心的时候掉下来。 正在等待加载对话框,或者查询完成以类似方式中断您。
即使你忽略了这种影响,你仍然知道后面的陈述的真相 - 早期的优化会让你在圈子里追逐自己,破坏已经工作的代码,并猜测(通常精度很低)关于事情可能会陷入困境的地方下。 首先设计好你的代码,然后你可以忘记优化,直到有机会解决一段时间,此时任何必要的优化都将是显而易见的。
我想这将取决于你在做什么以及目标受众是什么。
如果你正在为固定硬件编写软件(比如控制台游戏),那么使用与你部署的设备类似或相同的设备(至少测试设备)。
如果您正在开发桌面应用程序或其他领域的应用程序,那么您可以使用任何您想要的机器进行开发,然后再调整它以在所需的最小规格硬件上运行。 同样,如果您正在开发内部软件,那么公司想要购买的机器可能会有最低规格。 在这种情况下,在快速机器上开发(以减少开发时间和成本),并根据最小规格进行测试。
最重要的是,在最快的机器上开发,您可以亲自操作,并测试您将支持的最低或确切硬件。
链接地址: http://www.djcxy.com/p/6729.html上一篇: Is it premature optimization to develop on slow machines?