`
jiezhu2007
  • 浏览: 245528 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
Cfa1f850-3fc3-3a36-9cd8-c3415c9610c6
hadoop技术学习
浏览量:144200
Group-logo
大数据产业分析
浏览量:2982
社区版块
存档分类
最新评论

过早优化是万恶之源

阅读更多

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上面来。

 

 

不要为了优化而优化,优化应该先做好顶层设计,再落地到具体的技术细节,否则优化出来的东西,不会有长久的生命力。



 

  • 大小: 51.7 KB
1
0
分享到:
评论

相关推荐

    过早优化代码是万恶之源

    DonaldKnuth说“过早优化是万恶之源”(prematureoptimizationistherootofallevil)。这话也许有些夸张,但“过早优化”的危害我觉得不能忽视。  让正确的程序更快比让快速的程序正确要容易太多,太多。所以,缺省...

    藏经阁-云平台性能优化-七牛-李玮.pdf

    云平台性能优化需要遵循一定的原则,包括过早优化是万恶之源、优化顺序是从高层到底层、谨遵阿姆达尔定律等。同时,云平台性能优化还需要借助监控分析优化体系、监测工具、系统优化举例等技术手段。

    云平台性能优化设计.pptx

    1. **过早优化是万恶之源**:在设计初期,应关注系统的整体架构和模块划分,避免过早地针对某一小部分进行深度优化,这可能导致代码复杂度增加且影响后续维护。 2. **优化顺序是从高层到底层**:首先关注应用程序...

    javascript-极速快感

    在编程实践中,存在一个广泛认可的原则,即“过早优化是万恶之源”。这表明,在没有足够理由的情况下过早地对代码进行优化,可能会导致资源浪费和开发效率的降低。程序员应该将精力放在程序的核心部分,即“大岩石”...

    ActionScript3 性能调整 英文

    ”而Donald Knuth和Tony Hoare进一步强调:“过早优化是万恶之源。”这意味着,在没有明确识别出瓶颈之前,试图进行优化可能会导致不必要的复杂性和维护成本。Rob Pike则提醒我们:“瓶颈往往出现在令人惊讶的地方,...

    代码大全(文字版)

    8. **性能优化**:尽管“过早优化是万恶之源”,但了解如何分析和优化性能仍然是必要的。书中讲解了性能瓶颈的识别、基准测试和性能调优的策略。 9. **文档编写**:良好的文档是项目成功的关键。书中介绍了编写API...

    idea阿里代码规约 v1.0.4

    8. **性能优化**:虽然过早优化是万恶之源,但规约也提出了一些通用的性能优化建议,如避免使用显式类型转换,减少不必要的计算,合理使用缓存等。 通过使用Idea阿里代码规约插件,开发者可以在编码过程中实时获取...

    六十一条面向对象分析设计的经验原则

    21. **在需要的时候才考虑性能优化**:过早优化是万恶之源。 22. **避免过早地优化**:在确定瓶颈之前,不要轻易对性能进行优化。 23. **一致性**:保持设计的一致性,避免引入混乱的元素。 24. **不同对象之间应有...

    面向GC的Java编程

    Java程序员在编码过程中通常不需要考虑内存问题,JVM经过高度优化的GC机制大部分情况下都...  过早优化是万恶之源。  但另一方面,什么才是“过早优化”?  If we could do things right for the first time, w

    那些害人的编码“神谕”

    那些害人的编码“神谕”.同其它领域一样,计算机科学和工程领域也是群星璀璨,有些耀眼的星光甚至刺得我们...  “过早优化是万恶之源。”这是DonaldKnuth的一句名言。虽然大部分人都不知道,或者会忘掉前面半句:“Wes

    hbase-doc-zh:HBase 中文参考指南

    过早优化是万恶之源。——高德纳 下载 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 ...

    programming-challenges:编程挑战一书中的编程问题

    这本书的核心理念是通过实际的编程挑战来锻炼解决问题的能力,而不是过早地进行不必要的优化,因为"过早优化是万恶之源"。这句话出自计算机科学家Donald Knuth,强调在软件开发初期应注重清晰性、可读性和可维护性,...

    浅谈React组件之性能优化

    高德纳: “我们应该忘记忽略很小的性能优化,可以说97%的情况下,过早的优化是万恶之源,而我们应该关心对性能影响最关键的另外3%的代码。” 不要将性能优化的精力浪费在对整体性能提高不大的代码上,而对性能有关键...

    django-request-profiler:一个非常简单的Django请求分析器

    过早的优化是万恶之源。 有很多非常好的,完整的python和django分析器可用。 它们可以为您提供详细的堆栈跟踪和函数调用时间,输出所有已运行SQL语句,已呈现的模板以及过程中任何/所有变量的状态。 一旦确定合适的...

    java餐饮小程序源码-performance-checklist::chart_increasing:性能优化技术的综合列表,可提高您网站的性能

    “过早的优化是万恶之源”——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. ...

Global site tag (gtag.js) - Google Analytics