几句话说清楚19:描述性能优化成果的正确姿势

从10秒到1秒

周末了说点不硬的技术。

自从摩尔定律不那么好使了之后,人们才真正开始关注软件性能。各类开源或者商业产品也经常以性能提升XXX作为卖点宣传。如果在搜索引擎以“性能提升[9, 8, 7, 6]0%”为关键字搜索一下,能看到连篇累牍的精确匹配的信息。但这些信息本身却并不“精确”,甚至都不正确。

经常能看到的一个错误与下面这个简化的例子相似:

一辆汽车以前行驶100米需要10秒钟,新型号推出后,仅需要1秒钟。

你会看到很多产品信息将这种提升描述为“性能提升90%”。

我猜测90%的计算方式是:

(10 - 1) / 10 = 90%

但实际上这完全错误。

性能的表达

所有的性能都可以表达为:

性能 = 工作量 / 单位时间

其实就是单位时间内能完成的工作量。

在上面的例子中,工作量是移动距离(m),单位时间(s),性能其实就是m/s,也就是“速度”。

我们有很多常用的指标已经直接是这种形式,例如QPS、PPS、BPS等。

性能优化的表达方式

那前后两次的速度是多少呢?分别是10m/s100m/s。那性能提升就是100m/s / 10m/s = 10x

所以上面的例子中,你可以说:

  • 性能(速度)10倍提升
  • 快了10倍/1000%

但不能说:

  • 性能提升90%
  • 快了90%

一定要用到90%的话,那就是:

  • 移动耗时减少90%

如果真正按性能提升90%来计算,那么速度之前是10m/s,之后是10 * ( 1 + 90% ) = 19m/s,也就是1.9倍。

这个问题在英语世界里也很常见。例如经常会看到一些Get something done 90% faster的宣传,其实都应该改成Get something done 10 times faster。当然也有故意利用这部分认知漏洞,让人误以为性能提升了10倍的。

© 2020 DecodeZ All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero