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)。这话也许有些夸张,但“过早优化”的危害我觉得不能忽视。 让正确的程序更快比让快速的程序正确要容易太多,太多。所以,缺省...
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 ...
关于 《编程挑战》一书中的问题和解决方案 过早优化是万恶之源 一个很棒的参考网站: : UVa 用户名:cmb2
高德纳: “我们应该忘记忽略很小的性能优化,可以说97%的情况下,过早的优化是万恶之源,而我们应该关心对性能影响最关键的另外3%的代码。” 不要将性能优化的精力浪费在对整体性能提高不大的代码上,而对性能有关键...
在软件开发领域里经常能听到这样一句话,“过早的优化是万恶之源”,不要过早优化或者过度优化。下面这篇文章主要给大家介绍了关于iOS性能优化教程之页面加载速率的相关资料,需要的朋友可以参考下
过早的优化是万恶之源。 有很多非常好的,完整的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. ...
“大约97%的时间,我们应该忘记效率低下的问题:过早的优化是万恶之源。 然而,我们不应该放弃那关键的3%的机会。 一个好的程序员不会因这种推理而沾沾自喜,他应该明智地仔细看待关键代码。 但只有在识别出该...
状态 积极开发,始于:2014-07-13 当前状态:处于保留状态... 我们应该忘记效率低下的问题,例如大约97%的时间:过早的优化是万恶之源。 然而,我们不应该放弃那关键的3%的机会。 (C)唐纳德·克努斯(Donald Knu
后来,因为:过早的优化是万恶之源。 — 唐纳德·克努斯 还: 7 月 6 日:链接器和项目内容 链接器 你知道给编译器起名字吗? 她指的是现在称为链接器和加载器的东西。 为安卓开发? 使用类似于 gc 进行链接。 它从...
简单拍卖以太坊在设计时就考虑到了... 过早的优化是万恶之源 程序员浪费大量时间来考虑或担心程序非关键部分的速度,而在考虑调试和维护时,这些提高效率的尝试实际上会产生严重的负面影响。 我们应该忘记效率低下的问
过早的优化是万恶之源。-- Donald Knuth(1974年图灵奖) 用户为中心。 没有银弹。-- Fred Brooks(1999年图灵奖) 从重构到模式。-- Joshua Kerievsky(本书荣获2005年《软件开发》杂志图书通用类的效率大奖) 当一头牛拉...
的时间:过早的优化是万恶之源。 然而,我们不应该错过关键的 3% 的机会。 一个优秀的程序员不会被这样的推理所迷惑,他会明智地仔细查看关键代码; 但只有在识别出该代码之后。 唐纳德·克努斯 任务 选择做两个或三...
的时间:过早的优化是万恶之源。 然而,我们不应该错过关键的 3% 的机会。 一个优秀的程序员不会被这样的推理所迷惑,他会明智地仔细查看关键代码; 但只有在识别出该代码之后。 唐纳德·克努斯 任务 任务 1 - ...