专访Facebook HipHop作者/阿里研究员赵海平:生物与计算机交织的独特人生

  3 月 26 日,杭州的天阴沉沉,这是一种山色空蒙雨亦奇的美丽,还是雾霭笼罩下的怪异,对于来访阿里巴巴西溪园区的人们来说,没人关心这些。人们行色匆匆,兴奋地往各自目的地奔赴而去。我也来不及细思这些,因为今天要和刚从 Facebook 来到阿里的赵海平聊天。

就语言之争,赵海平称,有人会去争论锤子和斧子哪更好使吗?它不是要根据你做的事来定吗?

  赵海平是非常著名的软件工程师,曾在微软工作过。2007 年加入不到 50 位软件工程师的 Facebook(是第一位中国工程师),期间他创建了 HipHop 项目。HipHop 可以将 PHP 脚本代码先转换成抽象语法树(AST),之后再转换成优化的 C++ 代码,使其速度提高 5 到 6 倍,为公司节省了数十亿美元。2015 年 3 月他回到中国,加入阿里巴巴技术保障部,重点攻克阿里在软件性能以及 Java 使用过程中遇到的技术问题。

  采访在园区图书馆进行,四周书籍环绕长窗落地,赵海平看上去显然刚从另外一场繁忙的事务中抽身过来,但在这场长达 1 小时 47 分钟的采访中,他一直神采奕奕、兴致高昂地谈论了各种话题:小时候的趣事、生物和计算机间的痛苦抉择、HipHop 项目中的艰辛……

  “计算器有什么好学的?”

  赵海平中学时代就读于秦皇岛市山海关第一中学,学校虽然非常小,但很特别——恰好在天下第一关脚下,所以长城就成了这个学校的一面校墙,坐在部分班级里甚至能领略到山海关的雄姿。

  在他的那个时代,计算机还是个稀罕物,别说是高中,可能在大学,计算机都很少见。所以当他们北大物理系毕业的校长组织数学好的同学,参加学习计算机的课外活动时,赵海平很是疑惑,“计算器?这个需要学吗?”事后赵海平才知道,他把“计算机”听成“计算器”。不过那个时候他真不知道什么是计算机,并且《计算机报》也是在几年后才出来,就连当初学习的时候,整个书店也只有一两本计算机相关的书籍,而内容早被他们翻烂。

  起初学习的过程很原始,“一开始连计算机都没有,学校虽然已经去买,但要等很长时间。所以学 Basic 语言时,完全不知道在干吗,就纯粹硬学,学到最后连循环都学了,还没见到计算机。”后来计算机到了——是 Laser-310,赵海平对这个记得特别清楚,谈到这里的时候,他还绘声绘色地形容“一按那个键盘,还‘哔啵、哔啵’响”。赵海平回顾称,当时的游戏也很简单,简单到只有小人在屏幕上又唱又跳。放到现在看这哪是游戏,但在那个时候觉得这很奇特。

  小时候学计算机发生了两件事让赵海平记忆犹新,一是利用汇编命令打印系统。大家都知道利用汇编命令可以把删掉的文件再找回来,那个时候的赵海平觉得这很牛,于是去找汇编命令然后到学校实践,然而却把整个系统都给打印了。他至今仍很兴奋地说到:“苹果有反汇编的工具,它可以不断地反汇编操作系统,所以一边反汇编一边打印。机房老师不知道这事,但机器却一直在打印,打印了一宿,把机房的一摞纸全用了,而那个时候的打印纸特别贵……”

  另一件事则是,“废寝忘食”地输入飞机。当时整个学校只有一台计算机,赵海平每天中午都是赶紧扒完饭,省出一两个小时的时间去机房。有次在机房按照杂志上的坐标输入显示飞机。“图的打印很简单,实际上就是从这一点到另一点画一条线,但是它有很多条线,最后能画出一个特别漂亮的飞机图。”没想到快要结束时,有人碰掉了把电线,内容全没了,大家面面相觑,又心有不甘。于是第二天又跑到机房重新输入一遍,最后看着苹果绿颜色的屏幕上呈现的飞机,赵海平觉得那种成功的感觉至今仍很兴奋和微妙。

  抉择:继续生物 or 计算机?痛苦!

  如此喜爱计算机,为什么最后去了北大生物专业?这应该是很多人的疑惑。赵海平称,没有选择最爱的计算机专业有两个原因:一个是生物在当时太热门——21 世纪是生物的世纪,而当时赵海平高考的分数恰恰很高,“要低一点就能报计算机系,但高一点的全都直接进生物系,所以当时各个地方的高分学生都去学生物了。”第二个原因则是大家对计算机的认识。“那个时候还认为计算机只是一个工具,不管做什么,你都会‘玩到’计算机。”大家都把计算机当玩具,不是一个正儿八经的专业。

  不过当生物学了很长时间之后,赵海平发现自己还是喜欢计算机,他这么描述当时自己的感受:“我不喜欢生物,也做不好生物。身边学生物的人可能不比我更聪明,但他们做得比我好,因为他们热爱这个专业,愿意花很多时间去看文献做实验。我更多的是在生物实验室里写程序,找与计算机相关的活……这是一种很别扭的感觉。”于是他决定踏上痛苦的转行之路。

  之所以痛苦,主要是不愿意就这么放弃生物,用赵海平的话来讲就是“生物系的机会也很宝贵,而且已经学了这么久,又不确定自己的将来做计算机会不会更有意思?”另一方面则是生物实验室的台湾导师对赵海平格外青睐,他知道赵海平很聪明,但心思并没放在生物上,不过他仍然希望赵海平能够继续把博士读完……

  这些因素让赵海平一直很痛苦地思考这个问题,直到一件事让他下定决心转专业。那时候他已在美国纽约大学,“一上选修的计算机课感觉喜欢的不得了,听老师讲东西都有一种触动——原来是这样。”后来选修课的老师也鼓励他去学计算机,于是他下定决心,并整理自己做过的小项目去申请普林斯顿大学计算机硕士。

  半听半睡状态下,突然举手“老师这不对”

  进入普林斯顿计算机系后,赵海平如鱼得水,门门功课都是A+,学习过程更像是在印证他以前的实践,并补上自学摸索中所缺失的东西。“来到普林斯顿后感觉特别好,不仅仅是因为终于学了自己喜爱的专业,还有机会和非常优秀的人在一起,觉得特别快乐。”

  谈起在普林斯顿最大的感触,赵海平称,好几个同学都是当年奥林匹克金牌得主,虽然年龄较小,但都非常聪明和优秀。“所以我们工作一定要进入一家好公司,因为跟优秀的人在一起工作,就自动地有那种很快乐的感觉。”

  在普林斯顿学计算机的赵海平同时也很疯狂:经常打游戏、做小项目,有次到第二天早上五六点才睡,但发现八点还有课,于是他在那半听半睡,听到半途突然醒了,举个手说老师这不对……在这样的精神状态下,他还不忘给老师挑错,而老师也觉得,这学生挺神奇,一边睡还一边提问题。

  原本赵海平打算读完计算机硕士,然后再把生物学博士读完,但在毕业前的最后一个星期,他就拿到了四个 Job Offer。是读博,还是工作?赵海平又陷入了抉择,但最后还是听取了生物实验室同学先工作的建议。

  “现在回想起来,这是在骗自己。”

  为什么?

  “一旦干上计算机这行,生物博士对我并不是特别的重要。”赵海平如此坦言。

  不后悔读生物,非常感谢生物的训练教他如何系统“偷金子”

  对于赵海平改行学计算机,不少人都有误会,因为那个时候计算机恰好也火了,很多人以为他是因为计算机火了才改行。“其实真的不是这样子,那个时候 MBA 更火,工资也更高。也有朋友劝我去读 MBA,但经验告诉我一定要做自己喜欢的事,不能再跑到第二个不喜欢的行业,不然这辈子就废了。”而这也是赵海平改行之后,为什么老是如饥似渴地去学习和工作的原因,因为他老觉得耽误的时间特别长,心理上老想去补偿。

  但对于读了这些年生物,赵海平并不后悔,他称读生物的那些训练非常有用,对他帮助很大。“它教会了我,怎样系统地去解决一个问题,而不只是把这个问题解决。”赵海平非常善于举例子,他打了个比方:如果我们是一群海盗,有一个岛有很多金子。本科毕业的学生划着船弄来一箱金子就很出色;但如果是博士毕业的学生去弄金子,除了弄来金子之外,他还必须带来一句话才合格——没必要再去那个岛了,金子全被拉回来了。“这就是博士的训练,它告诉你要系统化的去解决一个问题。等解决问题后,你已经看到问题的所有方面,等别人再想解决,你已经全部想到。”

  赵海平放弃生物学博士学位,虽然有些许遗憾,但他庆幸的是这些训练没有白费。

  微软如日中天时去了 Facebook

  2006 年前后,微软如日中天、风头正劲,而当时的 Facebook 全部工程师还不到 50 人,在这样的情况下,赵海平离开微软,去了前景仍不太明朗的 Facebook。

  离开微软,主要是两个原因。一个是微软当时的流程非常规范,强调人和人之间按部就班做事,非常条理化。这也许是大公司发展到一定阶段的必由之路,但赵海平希望寻找节奏更快的平台,“毕竟我在生物上已经耽误 10 年了。”赵海平解释到,“当时的微软和硅谷公司在文化上还是有明显差异的, 硅谷文化强调个人的主动发展远远大过公司给你规划好的发展。”另外一个原因则是家庭因素,最终他来到了 Facebook。

  Facebook 的经历太独特、珍贵

  那个时候 Facebook 人特别少,只有 40 多个程序员,大家都叫工程师没有分组,当时所有人都挤在一个特别拥挤的办公室。桌子很小,彼此离的很近,出了问题,一吆喝就行。Facebook 用户数增长的特别快,大家的工作也都围绕着快速增长带来的问题进行,“一旦有什么问题,大家就往上扑,你愿意解决什么就什么,特别的没有章法。”赵海平称,这恰恰和微软形成一个鲜明的对比——毫无章法,乱到你有时候觉得微软还不错,它挺有章法。

  赵海平在 Facebook 待了 8 年多,他称无论是用户的增长、公司上市的奇迹,还是 Facebook 对整个世界的影响,都太独特。当初没有人想到,至少赵海平以及他身边的同事都没想到 Facebook 会是今天这么大的一个规模,当时只是看到在不断增长,并不知道增长之后意味着什么。独特也还包括做项目的艰辛,“我们是被逼的把网络和服务器做到极致,因为我们每省 0.1%,就是几百万美元,所以必须把东西做到最好。”

  现在回头看这些经历真太特殊,当年坐你旁边的人都成了高管,这是一种特别奇妙的感受,“像当年 Facebook 的的联合创始之一 Dustin Moskovitz 就坐在我旁边写过程序,你现在让他坐在我旁边写程序,不太可能!”但当时大家没有想这么多,所有人都干的热火朝天,讨论问题可能会一直持续到十一二点,下班了也可能在工作——网页怎么设计、后端应该怎么做…一大堆意见。

  这么疯狂的原因很简单,一个是 Facebook 用户不断地增长,一直在鼓舞着大家;另一个则是这些人都非常优秀——哈佛、CMU、MIT、斯坦福…,每一个人都特别有才、特别有想法。

  到阿里是想拥有另一段独特的经历

  从 Facebook 到阿里,并不是一个很突然的决定。赵海平来之前,已经跟阿里技术保障的刘振飞、周明、毕玄聊过,对阿里已经有了整体的了解。

  正式接触是在 2014 年阿里 IPO 前后,阿里组团来美国,王坚博士和赵海平深入聊了聊。发现技术很对口,需要解决的问题也很新鲜——Java、JVM 从来没做过。他又来了趟杭州,发现杭州挺美、阿里员工脚踏实地的公司文化很符合他的性格,对阿里很有好感。

  而让他下定决心回国则是阿里面临的技术难题和挑战。“在 Facebook 经历非常特殊,而阿里就更特殊——大规模的交易、单天的交易量、双十一的交易量,不是任何一家美国公司有的,这种独特性是我寻找的东西。当你去解决这样的技术难题时,你就会有新的认识:这个量级的问题可以这样解决,提升一个量级,就要用新的解决方法,最后你就能看到问题的全部。”体会不同角度去看不同的技术难题,对赵海平来说恰恰就是最享受的一件事情。

  HipHop 不为人知的故事:一开始野心并没有那么大

  其实最初做 HipHop 项目时,他们的野心并没有那么大,不是一定非要把它转换成C++,但后来发现,这么做确实可以提高性能,所以就思考是否可以用工具把整个网站都编译。

  那时 Facebook 内部有好几个项目都处于半竞争关系,每个人都仁者见仁智者见智,有人想改变 PHP 引擎实现,有人想在 PHP 应用层做调整,有人说可以转成 Java,而赵海平则倾向于保持 PHP 不变。“之所以倾向于不变,是之前大家已经尝试过将 PHP 转换成其它语言(Python),但四五个人转,根本赶不上二三十个人写 Code 的速度。”另外,团队里有很多 PHP 专家,突然改成 Java,让人怎么写代码?于是赵海平一直在这个领域探索,到最后只剩下 HipHop 和转 Java 两种方案。这时大家意见又不一,到底用哪个?讨论问题也有了情绪,怎么办?用数字说话!谁性能提高大,就用谁,最后 HipHop 胜出。

  线上执行的时候,赵海平内心很忐忑,很怕出现什么问题。“因为你改的是底层,只要有一个新问题出来,大家第一反应就是这里出了 bug,事实上十有八九都是应用本身的问题。”当时赵海平对其他团队的承诺是,有任何问题 24 小时内一定响应。有一年感恩节,正在别人家做客的赵海平,一个电话就立刻赶回去调试,虽然事后证明也不是底层的问题。“当时我跟团队说,我们要有阿信卖鱼的精神,不论是哪里的问题,我们都要帮他们 debug,赢得别人的信赖。”对于这些,赵海平虽然感觉非常辛苦,但却又感觉很爽,因为当时他们可能是最熟悉全部应用的团队。

  再回首 HipHop,赵海平感慨项目非常艰辛。“最累的时候,我开车都在想怎么写 Code,一边开车一边想,到了公司只是把脑子里想好的写下来而已。那个时候别人跟我说话,我都不大反应的过来,因为脑子一直在想这个东西。没有办法,面铺的太大了,等于整个程序语言的所有都要去实现。有时也想偷点懒,想着这个数据库函数这么冷门,肯定没人调用,先不做它,结果第二天就有人来找你……”

  虽然过程很痛苦,但痛并快乐着。赵海平找 Bug 每次都很快,半小时、一小时就能找到。但有一次 Bug 太底层,花了十几个小时才找到,最后找到 Bug 跟大家解释怎么回事时,“大家听到我说为什么还都听不明白时,那快乐真的很难用语言形容。”赵海平接着补充到,“其实人有的时候就是喜欢解决大问题、大影响的那种快感,希望自己做得工作特别有意义——掷地有声的那种。”

  性能优化要先剖析、迎着问题走、用数据说话


赵海平指出,如果有些活是重复性的,一定要思考怎么才能偷点懒,花点时间去想,你就能比别人快。

  谈到即将在阿里的工作,赵海平称,他不会急于跳进很具体的东西里去优化。他首先会从整体上做剖析,分析阿里各方面软件的运行情况——究竟用了多少资源。看清楚问题,才能钻进去优化,也只有这样才会事倍功半,才能真的找到最大优化的那个点。

  不做剖析就去优化是一个误区,你花了特别大力气优化,速度提高一百、一千倍,但整体上可能还是没有效果,因为这一块性能只占整体的 0.1%,你提高一万倍、甚至把资源占用降为零,最后你也只能提高 0.1%。

  优化一定要用数据、效果说话,有个误区是有人会认为某种语言就是比其他语言强,所以优化上总是选择某语言。但在实际场景中不能这样,比如:不是说 C++ 一定会比 Java 执行的快,在有的情况下 C++ 的速度可能和 Java 一样,甚至比它慢。所以在优化的时候,一定要用数据说话,不能凭着自己的技术信仰做决策。优化的方式可能仁者见仁智者见智,但最关键的是大家认同这个问题,然后用各种方法试,谁的效果好,就用谁。

  在性能优化上,一定要迎着问题走。不少人看到问题后,会想办法绕开问题——不调用或其它做法,但专家会迎着走,想办法解决问题。比如说网络延迟很高,专家会钻进去寻找延迟的原因,网卡有问题就解决网卡,软件有问题就改软件。赵海平总结到:“越迎着问题,问题可能解决的就越好。”

  优化上的取舍难、行政难

  在性能优化上除了一些误区之外,还有一些其他困难。其中一个就是取舍的问题,知道怎么优化,但是有代价,比如提升了一个地方的性能,可能影响了另一处的性能;或者今年和明年的情况完全不一样,今年是利大于弊,但第二年可能就弊大于利,这是取舍难问题,要想解决就必须时时跟踪系统不断地做调整。

  赵海平看来,最难的就是整体性慢。“整体性慢就是哪都不慢那么多,但是哪都慢,这才是最要命的一种情况。”如果遇到这种情况,就要仔细想想更底层的东西,究竟是什么原因让它普及性的慢?这个时候也许你能发现更大的问题。

  赵海平比喻称,这就像有些病人的病根很深,所以表现出各种各样的症状,但各种症状的根可能是在一个地方。“这就是我想说的:要想系统地提高性能,有时候要做架构上的大调整,进行深入的过程性优化,而不是一个具体、很有局限性的优化。”不过走到这一步,就会出现新的挑战,“不仅仅是技术上的难,还可能会出现行政上难——你如何去说服别人把整个系统做大的调整。”赵海平感慨到,“这可能会影响到线上的服务质量,换那么多新东西,大家也不知道能省多少,这个有时很难做。”

  很多技术专家擅长解决技术上难题,那遇到行政上难如何解决?赵海平也给出了他的看法。“项目刚开始野心做得不要太大,从小的地方做起,让人家看到一些实实在在的好处,然后你就能做下去。而能滚多大,就要看它是不是每一步都能带来很大利益,如果滚不大,就别做了。因为你确实没有办法去说服别人,不能说眼下没有利益,我现在花钱,过一年省钱…这个很难实现。”

  对语言之争的看法:“有人会去争论锤子和斧子哪个更好使吗?”

  聊到程序员对语言信仰的问题,赵海平称,不光国内,在美国也一模一样,这个可能就是程序员的特点,喜欢和人争论哪个语言更好用。从某种意义上来说语言也是一个流派,喜欢同一个语言的人,往往会有比较明显的共同点。

  但他很疑惑语言之争:“有人会去争论锤子和斧子哪个更好使吗?它不是要根据你做的事来定吗?”赵海平认为:“不同的语言像锤子和斧子一样,没有哪个可以把所有的问题都解决好,每一个语言都是在解决某一个特定的问题里有它的长处。这个恰恰是语言创造者的思路,他有自己认定的语言要解决对应问题的范畴。你偏要去争论某语言就是绝对的通杀,比其他语言样样都好,这个肯定不对。当然你可以有个人的喜好,但不能非要改变别人的想法,因为语言本来就是百花齐放、百家争鸣。”他还指出,语言之间的差异,只有在解决某些具体问题时可以比较出来,而这些恰恰就是语言独到的地方。

  如果非要说哪个语言类似于万能语言的角色,赵海平认为目前应该还是C和C++。“它很底层,不做太多假设。越是这样的语言,它越更加通用一些。只要语言做了假设,它就会更上层一些;只要有假设,就会放弃掉一些东西,因为假设让它更加有局限性。”像 Java、PHP、Python 等其他语言,它都提前实现了一些东西。在帮你提前实现东西时,它已经做了假设。“比如说 Java Applet 定义已经做了假设,PHP 里数据类型已经做了假设,这实际上相当于定了一个框架,只能用它那一套内存管理和执行环境。但在C和 C++ 里面没有这些问题,你自己可以定义这些东西。这也就是为什么越往后端的东西,就越要拿C和 C++ 写的原因,因为对系统要求独特,不像高层的软件用这些假设没问题,底层的东西很多时候是不能用假设。”

  但缺点也在这里——你要花时间定义,可能你定义来定义去还没有人家 Java、PHP 或 Python 等其他语言好。

  对开源的认识和思考

  赵海平的 HipHop 给 Facebook 带来了很大影响,为了惠及他人和社区,最后把它开源了。那他对开源有哪些认识和思考?

  就开源还是不开源,赵海平拿 Facebook 和谷歌举例。他称,Facebook 开源做的特别多,而 Google 做得挺少。主要原因是 Google 有很多关键、核心的技术不能开源,因为一旦开源可能会给它带来竞争压力,而 Facebook 没有这种压力,因为就算拿走它的源代码,也不意味着能够复制出一个 Facebook。所以赵海平认为,只要公司不受影响,你就可以开源。而开源带来的惊喜和好处很多,“如果很多人关注你项目,至少说明做的方向是对的,别人拿去执行,反馈过来的问题相当于帮你做 QA。如果人家特别感兴趣,深入研究、甚至帮你做修正,这等于免费帮你打工……”赵海平还发自内心地谈到,很多开源社区的人思考问题方式很独特,和他们聊天很能扩展你视野。

  总体上来说,开源是一个利大于弊的事情,虽然它可能会耗费你很多时间和精力,但在耽误时间的背后,它有巨大价值:学术上带来名气、能提高你的业务水平(别人的指指点点就是学习和提高的过程),而从大的角度来看,也给公司创造了技术开放、乐于回馈的良好形象。

  专注才能走得更远

  在很多人眼中,赵海平已然是一名伟大的计算机科学家,所以在采访中记者也就他如何走到今天的高度以及生活中的一些习惯进行了交流。

  赵海平很谦逊的表示:“什么是伟大的科学家?伟大的科学家必须能够为科技带来革命性的变化,例如创造了新型的语言或操作系统,我只是做了一个项目,而且只是对 Facebook 意义很大,所以还差很远。”他又继续分享到,不过要想做成事,心态很重要。“我来的时候就跟同事聊天说,要忘记过去的成绩,脚踏实地做事,可能你比别人有经验,但还是要扎扎实实展开工作,要把自己的注意力转移到要解决的技术难题上、转移到个人的知识扩展上。你专心的去做这些事情,不去想太多其他事情时,可能会走的更远,更好。”

  他还就专业的程序员话题举例,“我不相信麦迪(Tracy McGrady)在最后投三分球时,他脑子里会想比分、输赢、会去想这场比赛能给他带来多少奖金,他不会去想这些,只要想了三分球就投不进去。他要的是那种完全投入的境界和状态,只有在那种巅峰的状态,他才能把球打的最好。”任何一个职业运动员都懂得这一点,专业的程序员也同样需要做到。只要做得好,别人就会认可,一切东西都会水到渠成。

  高效率诀窍:一整段时间非常重要

  一个人要想取得成就,一方面跟他的天赋有关,另一方面他的习惯也不可避免地起了部分决定性作用。在个人习惯上,赵海平非常强调专心、强调一整段时间。他写程序的时候希望至少四个小时内不被打扰,他也不去看手机、Email、接打电话、参会等。这是一个高效率的诀窍,“因为写程序是高度专注的脑力活动,你一被打扰就转出去了,再转回来不仅要花时间,而且这种转换消耗特别大,所以要尽量避免或减少被打扰。这也是一个很好的用脑习惯,只要养成这个习惯,有的时候你会发现写程序也是一种休息——当你进入状态时,你不会觉得累。”

  另外,每个人也要总结自己一套高效率的工作方式,比如说用什么样的编辑器,在这个编辑器下敲什么样的命令可以省时间,尽量多思考一下。“这方面我比较变态,我有很多的命令都是一个字母。‘啪’,敲一个字母命令就出来。”赵海平指出,并不是非得要这样做,他只是想强调:如果有些活是重复性的,一定要思考怎么才能偷点懒,让复杂的事情三两下就做完,花点时间去想,你就能比别人快。

  对在阿里的未来:会去思考怎样做这些贡献

  在赵海平那封告别信中,他曾期待到,他想要中国成为软件技术最好的地方,想要阿里成为最值得工作的地方。为了这个目标,他会怎么做或进行哪些努力?

  赵海平称,一方面希望把技术工作做好,期待能给阿里带来整体性能的提高,能够真的建立一整套剖析系统,大家都能够根据这个系统做软件上的调整,从而提高整体性能、节省机器。

  另一方面希望带动大家对技术的爱好,能够带动一批人、带动气氛,并且也期待有一帮好哥们。如果还能进一步的话,就做一些开源,给阿里创造开源的好形象,带动整个中国的开源氛围,提高各个公司对相关技术上的认识……

  而在未来,他有可能也会做一些中美技术交流上的牵线搭桥。他在最后特别强调称,“不希望大家把这话理解成我会做到这些,只是想和大家表明:我会去思考怎么样去尽量做这些贡献。

  结束语

  采访最后,记者还就 2010 年 PHP 之父 Rasmus Lercbrf 对 HipHop 的一个评价,询问了赵海平的看法。Rasmus Lercbrf 当时评论:不能把 HipHop 当做银弹,它确实很酷,会成为某些网站很好的选择,但对于很多 Web 应用而言,执行速度并不是主要因素,所以不能对任何项目都适用。

  赵海平回应称,Rasmus Lercbrf 说的非常正确。“他想说的意思就是:要先剖析你的软件,然后再做性能提高,他表达的和我说的是一样的。”他进一步解释到,“之前 Facebook 软件剖析发现 PHP 的 CPU 用的很多,所以 HipHop 才管用。但如果你剖析软件,发现更多的时间花在网络等待上,而没有花什么 CPU,那么用 HipHop 怎么可能提高你的性能?”赵海平还表示,Rasmus Lercbrf 的评论说在了一个敏感的时刻——正好在我们发布时,这看起来似乎有点负面,但并不是这样子。“他说的非常科学化,就是想告诉大家一定要完完全全理解你软件,究竟是网络时间,还是 CPU 时间,这是截然不同的两个概念,在性能优化上也是截然不同的途径去解决。”

  本文选自程序员电子版 2015 年 4 月A刊。

0

0

 

Leave a Reply