刚才看到文章这个见解颇有同感,之前也没有深入理解到可维护性的重要性。在如今的公司呆了一年半,才明白。由于如今的公司用户量大,团队开发人员多,遇到不少难以维护的代码,花费人员沟通成本,延缓功能的开发进度,去填补遇到的坑.....php
http://www.cnblogs.com/freeflying/p/4788494.htmlhtml
1、性能不是不重要,而是他没有可维护性重要。要理解这一点,首先要理解可维护性的重要(请再读上一篇我花数周找bug的段子);而后要明白:解决性能问题,咱们能够有不少代码之外行之有效的方法,而可维护性基本上就只能靠代码了;最后,仍是要牢记:没有牺牲,就没有胜利!
2、因此,在绝大多数状况下,当性能和可维护性相冲突的时候,性能让位于可维护性。咱们采用其余办法来弥补代码性能不够高的问题。
优化首先须要找到性能“瓶颈”。不然,任何人均可以随手一指,“这段代码须要优化”。
可读性更强的代码老是更好优化
硬件永远比软件便宜(即硬件比技术人员便宜,看系统规模而定)
程序员
说了这么多,不知道有没有引发同窗们的反思。可能你们仍是过不去内心那道坎:明明有一种性能更高的方法咱们为何不用?web
由于浪费呗!算法
什么?你有没有搞错?个人代码,至少省了一块内存条!那是你还没从“穷学生”的角色里转换过来。你花一周的时间对代码进行了优化(就先不考虑你的优化带来的维护成本增长了),为老板省下了一块内存条的钱。你觉得老板会拍着你的肩膀表扬你么?老板打不死你!数据库
兄弟,帐不是你那样算的。当你是学生的时候,你的时间成本是0;但你进入工做岗位,每一天都是要发工资的。服务器
经过代码来调高性能,是一种无奈——对硬件性能不够的妥协(参考:80年代游戏开发者的辛苦困境。这样写性能就高,但为何如今没有谁再这么写代码了?)。不然,绝大多数状况下,堆硬件比优化代码的效果好得多,并且便宜得多。硬件的成本按摩尔定律往降低,咱们程序员的工资也能按摩尔定律减么?(注:硬件愈来愈便宜,而人员工资愈来愈增长,就拿工厂的普通工人用工成本也在增长)并发
明明window 10 比window 95更耗性能,为何今天没人用window 95?为何VS 2013要10G的空间咱们都还屁颠屁颠的赶忙装上?为何如今你们都用C#,没人用汇编?(注:汇编比高级语言性能强,接近机器)函数
咱们站在人类文明积累的今天,就应该理所固然的享受这一切成 果。有打火机你不用,你要钻木取火。若是你是由于要学贝爷荒野求生装逼,能够理解;若是你说你是由于怕浪费自然气,我……我……我怎么说你呢?“给作打火 机的一条活路,行不?”一样的,程序员大神同窗,你就当作好事,给下面写底层作硬件的一条活路吧!你的代码都是 010001000010000001010101……了,你让其余人怎么活啊?高并发
最后,我忽然想到的一个程序员为何对性能如此敏感疯狂,对可维护性绝不在乎的一个可能缘由:
你们以为是否是这样的?因此,愿意把代码百炼成钢绕指柔的人少。想来,是一种莫名的悲哀和凄凉。
某网友说:
感受性能问题属于眼前问题,可维护性问题属于之后的问题。不少人就是感受先把眼前本身的事儿处理完就行,程序只要能运行,老板满意就万事大吉,至于之后维护爱谁谁吧,那个时候老子已经另谋高就了,烂摊子留给后面的倒霉蛋吧。
这段话的确说出了目前的现状,被逼的,上面只看功能完成与否,功能完成的质量无论。那还关系代码的可维护性干吗。因而把代码复制,拷贝函数,只要能跑起来就行了。
性能、可维护性历来都是要折中,过度从代码中追求性能会增大开发成本、下降可维护性。
现实中老板、客户真不在乎那点硬件成本。只要项目快点上线。二期三期四期优化都好说。
张口闭口 谈性能的 经理 我以前在北京 也见过 几个。
最后 用几个 实际的项目,堵住了他的嘴
—— 别跟我谈性能,即便我用滥反射,性能也比你的快。
赞成,除了核心功能和高并发的页面,一直以来写代码的风格,首先就是可读性,可维护, 而后再是性能。
个人思考:
性能问题:关键是找到性能的瓶颈点。而不是纠结于细微的。也就是主要矛盾。把主要矛盾解决掉后,就好多了
就拿php来讲,是解释性语言,解释性语言是比不上编译型语言快。可是在web应用中,不涉及到复杂的cpu计算(简单的增删查改数据库,不是分词这么复杂的算法,这种属于cpu密集型),瓶颈在磁盘读写(磁盘i/0)和数据库上。
因此看不出php的劣势出来。当达到facebook这样的应用,他们就会感到一点点php优化,对整个成本的减低,省去不少服务器。
因此有规模,就是规模成本。经济学中有个规模效益。通俗例子理解,生产100个要这么多成本,生产1000也是差很少的成本,可是能够获得更多利润。因此只能把规模扩大,才能赚到钱。
你达不到那个规模的时候,去谈优化性能,带来的是得不偿失的。
并且,就算是解决性能问题,关键是找到瓶颈在哪里,解决了瓶颈,就会带来质的变化。而不是纠结于细节优化。主次矛盾要分清楚。
单纯说性能,那直接用汇编写代码,发明高级语言干吗,汇编语言更加接近机器二进制,因此性能更强。可是汇编语言不容易维护,由于难懂,难上手。不接近人类的思惟习惯。
记得国外有本书中提到一个观点:代码是写给人(对象是程序员)看的,不是写给机器看的,若是是写给机器看的,那么,直接使用二进制01011这样的方式去写代码呢,机器识别就是二进制。并且,性能更强,不用通过中间转换,是否是。