-
将欲强之,必故弱之──记 Mingle 性能调优 - [技术]
2008-09-20
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://phoenixtoday.blogbus.com/logs/29434524.html
《老子》第三十六章:
将欲歙之,必故张之;将欲弱之,必故强之;将欲废之,必故兴之;将欲夺之,必故与之。是谓微明。柔弱胜刚强。鱼不可脱于渊,国之利器不可以示人。
大意:
想要让它缩小,就一定先要让它扩张;想要使它削弱,就一定要使它增强;想要灭掉它,就一定要振兴它;想要剥夺它,就一定要给予它。这叫做隐藏意图。柔软的战胜刚直的,弱小的战胜强大的。鱼不可离开深渊,国家的锐利武器不可以在别人面前显示。
之所以对老子这段话特别有感触,是在其中的一句“将欲弱之,必故强之”的逆过来应用“将欲强之,必故弱之”。意思是你要增强它,就先要削弱它。
最近有幸与一位无论是公司还是世界范围都堪称顶级的开发大师结对编程了两天,获益匪浅。其实主要的收获不在具体技术细节,而在解决问题的方式。因为Mingle 接近2.1版本的Release 了,所以最近有些工作是在做性能调优。我和这位大师第一天所做的工作就是调整Card 的属性编辑性能。之前也与团队里面的一些成员进行过部分模块的性能调优。而这位大师做了一件与众不同的事情,让这句“将欲强之,必故弱之”强烈的撞击了我的脑袋。以至于这几天细细回顾起来,还觉得很有味道。大师在进行性能调优之前,将Mingle底层的JRuby Runtime 实例调整为一个,并且将所有的后台无关任务全部删掉。这也就使得,Mingle在每个请求下,只运行在一个线程中,而且功能不完善,速度甚至可能会因此变得缓慢,大大的“弱”化了Mingle。性能调优,本意在强化Mingle,为什么先要这样的弱化它呢?
开始的时候,我很不解的看着大师。后来大师给我仔细的解释了这样的好处:首先,所有的请求都会在一个线程中处理,那么你看到的东西是机器真的一个接一个的处理问题,很容易一眼看出最耗时的地方,虽然可能比实际的情况稍慢,但却一针见血;其次,去掉后台任务,的确让Mingle少了许多功能,这种性能调优的数据,跟实际会有些出入,可是后台任务的运行,经常会打印出一些日志,干扰了性能调优的日志文件,使你不容易发现问题,虽然跟实际的数据有些出入,但最慢的地方依然最慢,你优化了它,真实的数据也就得到了优化。也就是这样的弱化,是为了增强Mingle 未来的性能!
大师出手,不一样就是不一样!回来后,越揣摩越有味道!朱雀服了!朱雀服了!
“将欲强之,必故弱之”,什么时候才可以修炼到这种地步呢?朱雀服了!
随机文章:
关于REST API设计的一些小经验 2009-09-05活灵活现用Git-技巧篇 2009-02-13活灵活现用Git--基础篇 2009-01-05Textmate 快捷键总结 2008-08-04开发你自己的XMPP IM 2008-03-18
收藏到:Del.icio.us








评论