Don’t Cut Yourself: Code Optimization as a Double-Edged Sword。中文翻译:过早优化是万恶之源。
代码优化的好处多多,但是这并不意味着所有的代码都需要进行优化,有时过度的优化反而适得其反——费时、费力、不讨好。
“现代计算机科学的鼻祖”Donald Knuth曾说过“过早的优化是万恶之源”,因为:让正确的程序更快,要比让快速的程序正确容易得多。文中讲了7个原则,简单罗列如下:
1. 究竟要优化什么?
2. 选择一个正确的优化指标
3. 优化在刀刃上
4. 优化层次越高越好
5. 不要过早优化
6. 依赖性能分析,而不是直觉
7. 优化不是万金油
更详细的大家可以看英文: http://blog.smartbear.com/programming/dont-cut-yourself-code-optimization-as-a-double-edged-sword/
为什么把这个话题拿出来讨论下,因为我现实中发现过早优化,其实是一个非常容易犯的错误。举几个例子:
1、数据库优化中,为了性能优化,放弃通用性,把SQL全部用C语言重写,这种技术是不可能得到发展的。
2、Hadoop领域里面,Tez/stringer为了解决hive性能,只是将M/R通过DAG作业来替代,将多个作业用一个作业来替代,减少中间过程。但是实际上hive用在查询上,除了M/R效率底下外,还有进程启动代价太高,以及最主要的是数据存储不是专门为分析场景准备的。所以我预计如果Tez/stringer只是按照目前的思路优化,最后肯定昙花一现。
3、Shark,hive on spark。简单的将hive拿到spark上来,从最新资料来看,DataBricks 已经被放弃了shark,转而将重心放到 Spark sql上面来。
不要为了优化而优化,优化应该先做好顶层设计,再落地到具体的技术细节,否则优化出来的东西,不会有长久的生命力。
相关推荐
DonaldKnuth说“过早优化是万恶之源”(prematureoptimizationistherootofallevil)。这话也许有些夸张,但“过早优化”的危害我觉得不能忽视。 让正确的程序更快比让快速的程序正确要容易太多,太多。所以,缺省...
云平台性能优化需要遵循一定的原则,包括过早优化是万恶之源、优化顺序是从高层到底层、谨遵阿姆达尔定律等。同时,云平台性能优化还需要借助监控分析优化体系、监测工具、系统优化举例等技术手段。
1. **过早优化是万恶之源**:在设计初期,应关注系统的整体架构和模块划分,避免过早地针对某一小部分进行深度优化,这可能导致代码复杂度增加且影响后续维护。 2. **优化顺序是从高层到底层**:首先关注应用程序...
在编程实践中,存在一个广泛认可的原则,即“过早优化是万恶之源”。这表明,在没有足够理由的情况下过早地对代码进行优化,可能会导致资源浪费和开发效率的降低。程序员应该将精力放在程序的核心部分,即“大岩石”...
”而Donald Knuth和Tony Hoare进一步强调:“过早优化是万恶之源。”这意味着,在没有明确识别出瓶颈之前,试图进行优化可能会导致不必要的复杂性和维护成本。Rob Pike则提醒我们:“瓶颈往往出现在令人惊讶的地方,...
8. **性能优化**:尽管“过早优化是万恶之源”,但了解如何分析和优化性能仍然是必要的。书中讲解了性能瓶颈的识别、基准测试和性能调优的策略。 9. **文档编写**:良好的文档是项目成功的关键。书中介绍了编写API...
8. **性能优化**:虽然过早优化是万恶之源,但规约也提出了一些通用的性能优化建议,如避免使用显式类型转换,减少不必要的计算,合理使用缓存等。 通过使用Idea阿里代码规约插件,开发者可以在编码过程中实时获取...
21. **在需要的时候才考虑性能优化**:过早优化是万恶之源。 22. **避免过早地优化**:在确定瓶颈之前,不要轻易对性能进行优化。 23. **一致性**:保持设计的一致性,避免引入混乱的元素。 24. **不同对象之间应有...
Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都... 过早优化是万恶之源。 但另一方面,什么才是“过早优化”? If we could do things right for the first time, w
那些害人的编码“神谕”.同其它领域一样,计算机科学和工程领域也是群星璀璨,有些耀眼的星光甚至刺得我们... “过早优化是万恶之源。”这是DonaldKnuth的一句名言。虽然大部分人都不知道,或者会忘掉前面半句:“Wes
过早优化是万恶之源。——高德纳 下载 Docker docker pull apachecn0/hbase-doc-zh docker run -tid -p <port>:80 apachecn0/hbase-doc-zh # 访问 http://localhost:{port} 查看文档 PYPI pip install hbase-doc-zh ...
这本书的核心理念是通过实际的编程挑战来锻炼解决问题的能力,而不是过早地进行不必要的优化,因为"过早优化是万恶之源"。这句话出自计算机科学家Donald Knuth,强调在软件开发初期应注重清晰性、可读性和可维护性,...
高德纳: “我们应该忘记忽略很小的性能优化,可以说97%的情况下,过早的优化是万恶之源,而我们应该关心对性能影响最关键的另外3%的代码。” 不要将性能优化的精力浪费在对整体性能提高不大的代码上,而对性能有关键...
过早的优化是万恶之源。 有很多非常好的,完整的python和django分析器可用。 它们可以为您提供详细的堆栈跟踪和函数调用时间,输出所有已运行SQL语句,已呈现的模板以及过程中任何/所有变量的状态。 一旦确定合适的...
“过早的优化是万恶之源”——Donald Knuth • • • :card_file_box: 目录 :hammer_and_wrench: 1.1. 1.1.1. 1.1.2. 1.1.3. 1.1.4. 1.1.5. 1.1.6. 1.1.7. 1.1.8. 1.1.9. 1.2. 1.2.1. 1.2.2. 1.2.3. 1.2.4. 1.2.5. ...