性能优化,你对时间真的了解吗

包括我在内的所有的开发人员都是以任务为导向的。我们倾向于被引导,当没有明确的规则来引导时,我们会变得无所适从。这就是为什么我们做事前都会想知道怎么去做。我们喜欢手把手的教学。然而所谓的指南都是建立在某些理论和深厚的知识经验上的。

正因如此,我不会告诉你怎样让网站变得更快。相反,我要告诉你某些现像的理论或原因。我会运用心理神经学的研究分析以及心理学原理解释一些生活中的例子,我也会试着回答以下几个“为什么”。

  • 为什么时间和性能如此重要?
  • 为什么我们不喜欢等待?
  • 在网络世界里,为什么更快并不意味着更优?
 "Alice:永远是多久? 白兔子:有时候只有一秒."—— Lewis Carroll。《爱丽丝梦游仙境》
"Alice:永远是多久? 白兔子:有时候只有一秒."—— Lewis Carroll。《爱丽丝梦游仙境》

除了这些,文章还会从心理层面介绍一些实际案例。比如,在项目的性能优化过程中,怎样拥有比竞争对手更好的性能,以及如何让用户访问你的网站过程中忽略等待的存在。在理解了以上的“为什么?”之后,希望你下一次参与优化工作时,已经准备好去面对那些结构化的问题,并在优化问题上有自己清晰的见解。


 任何一种指南或说明从根本上都存在一个简单的"为什么?"
任何一种指南或说明从根本上都存在一个简单的"为什么?"

基本概念

“嗯,我以前没听过这些话,可是听起来是罕见的废话。”,假海龟在爱丽丝梦游仙境中就如是说。所以呀,我们还是先说重要的事吧。先介绍下基本的术语和原则。载下面几个段落,我会定义几个术语,它们将在整篇文章中被用到。
时间可以从客观和心理两个不同的方面进行分析。我们将可以被计时器计量的时间叫做客观时间(objective time)或者钟表时间(clock time)。客观时间跟用户和网站或app交互时所感知的时间不太一样。我们将用户感知的时间定义为心理时间(psychological time)或者脑力时间(brain time)。这种时间比较能引起心理学家、神经学家或者像我这种怪人的兴趣。

 心理时间总是和钟表上的客观时间不同
心理时间总是和钟表上的客观时间不同

性能优化是提升服务器传输速度、反应或其他类型的响应速度以优化用户体验的过程。
我们把用户必须等待系统响应的交流方式称作human-to-computer方式。相反,几乎没有系统延时的响应,叫做human-to-human方式,因为它跟我们现实生活中的正常对话相似。
性能预算正如Tim Kadlec定义的一样:“正如它的名字一样,你给页面制定一个预算,不允许页面超出这个限制”。由于这篇文章写作目的关系,我们只考虑性能预算中的时间元素 ——即页面加载、用户输入的响应等。

Part 1:客观时间

Now, here, you see, it takes all the running you can do, to keep in the same place. If you want to get somewhere else, you must run at least twice as fast as that!
The Red Queen in Lewis Carroll’s Through the Looking-Glass

你看现在你竭尽全力的跑才能保持原地。如果想去到其他地方,你需要跑得更快。—— by 红皇后
来自Lewis Carroll的《走到镜子里》

正如我们上面定义的那样,客观时间是可以被钟表计量。作为这一系列的第一篇文章,我们将讨论下怎样把这种时间更高效的运用到我们的项目中。

记住时间就是金钱

这个短语,曾被本杰明.富兰克林(Benjamin Franklin)用到《给年轻商人的一些建议》(Advice to a Young Tradesman)中,这句话在同时代中仍是公认的真理。近期一项调查显示,访问者仅需3s就能停止对一个网站的继续访问。沃尔玛网站,每提升1s就能增加至少2%的访问量。当汽车配件零售商AutoAnything 将他们的加载时间降低一半时,提升了13%的销售额。用户非常注重自己的时间,所以human-to-human的交流形式显得越来越重要。

Platform success model from Google
Platform success model from Google

线上系统而言,新的交流方式意味着新的设计和开发方式。在web行业,我们谈论速度和性能已经有一段时间了。我们已经总结了快速交流的重要性,也一直努力在几秒内完成某项操作,每秒传输数kb、数帧等。因此我们已经知道怎么使用技术让网站变得更快。此外,我们也在持续咨询有丰富user-to-website交互经验的的开发人员和公司。2014年11月,Dimitri Glazkov, Jochen Eisinger 和 Chris Harrelson在他们的关于Blink渲染引擎的视频“State of Blink”中提出基于交互时间的概念platform success model
Platform success model from Google
Platform success model from Google

在“2s加载时长”建议几年后,platform success model将页面加载时长限制到1s。一般开发人员和项目经理都很满意这样一种说法,“时间的变长将会影响搜索结果的排名”。但这种说法是基于什么理论之上的呢?我们在设定基于时间的目标或性能预算有多少的自由度呢?比简单的数字更有意思的是,我们能对这些时间进行创新,让它给用户更好的体验吗?这些都是这篇文章将要介绍到的内容。

选择一个性能预算

正如之前定义的,性能预算是我们给一个线上系统设定的时间相关的操作的限制,我们不允许系统超过这个限制。human-to-human会话意味着,会话者问题发起和系统响应之间的时间间隔非常短。从心理学角度,一旦涉及到短期间隔,我们都应该将这四个时间牢记于心:


心理时间间隔
心理时间间隔
  • 0.1 to 0.2 seconds
    研究指出这个时间是仿真的瞬时(instantaneous )行为可接受的最大范围——这个区间,用户几乎一点也感受不到延时。
  • 0.5 to 1 seconds
    这个区间是立刻处理行为(immediate )的最大可接受时间。通常做为是human-to-human交流的响应时间。这种延时通常会被察觉但在大多用户的可接受范围内。在此期间,如何用户的指令(比如点击按钮或链接)没有在此时间间隔中被发送,就一定要给用户一个提示表明他们的指令已经被接收了。
  • 2 to 5 seconds
    心理学家 Mihaly Csikszentmihalyi将用户注意力集中,完全沉浸于某个活动并极其享受的状态定义为最佳体验(optimal experience)
    虽然最佳体验有很多客观因素,但对于网络上大多数用户而言,集中时间都在2s到5s,这就是为什么这些年来我们一直将2s作为页面的最佳加载时间。
  • 5 to 10 seconds
    根据美国国家医学图书馆国家生物技术信息中心的数据,人类的平均注意力从2000年的12秒下降到2015年的8.25秒。想想看,这比金鱼的注意力还少1s。为了简化描述过程,另一方面也强调下人类相对金鱼的优势,我们将10s作为用户注意力时间的最大值。超过了这段时间,用户注意力虽然仍在正在进行的事情上,但很容易分心。这段时间是系统抓住用户的关键时间。否则用户将会永远失去。

如果我们将这些时间应用到上述提到的Blink团队提出的platform success model上,便可以得出1s加载时间和0.1s相应时间的更人性化的结论。

  • 加载页面需要立刻(immediately)完成
  • 用户行为的反馈需要瞬间(instantly)完成

立刻加载页面,瞬间给出响应
立刻加载页面,瞬间给出响应

我们人类从穴居祖先那儿很好的继承了一项技能,内心的秒表(inner stopwatches ) 。因此,你可以根据上述的时间段,放心的给你的下一个项目做一个性能预算。其实时间本身是没什么用的,除非将其放在某个具体的环境中。感受一下当听到这样说法时你是什么反应,“一个流程需要10s时间完成”。
“A process will take 10 seconds to complete.”
“A process will take 10 seconds to complete.”

怎么样?我打赌你的第一反应肯定是:"具体什么流程?" 所以你的大脑可能会根据生活经验、当时的想法和情绪等再做出判断。一旦你的大脑有了一个大致的猜测后,才会开始评估这个10s是否合理。
也就是说,我们不会随意选择一个随机的时间,而是根据特定的场景选择时间。首先,这种场景可能是我们自己设定的,比如为了满足用户human-to-human的交流模式而设定的性能优化需求。其次,它也可能是由竞争对手引起的。在这种情况下,我们扮演者追赶着角色,达到其他人设定的性能水平。我们来看看下面两种情况。

性能优化:20%原则

我们大多数人或多或少都会遇到这种情况。客户反应说你们的搜索功能太慢了。你通过测试显示平均5s能搜索出结果。通过一些优化技术,将时长降低到4.5s。你非常兴奋,居然能在4.5s就能搜索出结果,happy的发邮件告诉客户这个消息。通常都会得到这样的回复:“我没感觉变快了呀”。唉,累觉不爱。那我们看看为什么客户没感觉到变化。

用户不一定会察觉到你的优化,所以不是兴奋得太早
用户不一定会察觉到你的优化,所以不是兴奋得太早

1834年,实验心理学的一个创始人, Ernst Heinrich Weber假想了一个定律:将差别阈限( difference threshold)最小可显示差异(just noticeable difference)解释为通常人类在刺激(重量、亮度等)下的可察觉的最小差异。不就后Weber的学生, Gustav Theodor Fechner将这个定律作为测量感觉的度量单位,作为心理物理学的基础。这项由Weber和Fechner负责的工作被称为Weber-Fechner Law。这项定律依然被很多科学家作为理解感知的重要工具。
时间也逃不开这项定律。心理物理学实验表明,对于少于30s的较短时间,一个JND(just noticeable difference)平均是7%到13%之间。将 Weber-Fechner Law 简化成一个好的经验法则就是:20%原则。也就是说,为了让用户感觉到时间的变化,至少要是时间改变了20%。
对于较短的时间间隔,Weber-Fechner Law可被简化成20%原则
对于较短的时间间隔,Weber-Fechner Law可被简化成20%原则

我们回到上面的例子,客户几乎感觉不到优化的存在。最初,搜索时间是5s。根据20%原则,要让用户感觉到差异,新的搜索时长至少要加快1s:
5 seconds × 0.2 = 1 second
这就是为什么用户感受不到速度0.5s的提升。

虽然我们现在在谈论性能优化,但这项原则也可以用在相反的方向。举个例子,如果你在一个会降低网页速度的功能,你也可以用这20%原则来判断这种性能损耗会不会被用户察觉。允许我们的代码慢一点但不影响用户体验的行为叫做regression allowance

Note当我们说到20%原则时,仅仅是说会不会被察觉。被察觉并不意味着有意义。为了然用户认可你的性能优化,你应该远不止做到这些。

但是,当竞争者带着更好的性能和功能进入市场时,你应该怎么做呢?如果即使用regression allowance后,我们在时间上和竞争者在技术上也没有可接近性怎么办呢?这种情况下,我们至少可以了解下G. Moore在他么书籍,* Dealing with Darwin中提到的中和(neutralization)*

Neutralization, Or Chasing The Leader

时间中立发生在两个服务之间的时间差比较明显时,但不影响用户对其中一台的偏爱。在这种情况下,服务的可靠性、可用性和其他质量相关因素发挥更为重要的作用。换句话说,当你比竞争对手更好的服务器时,time neutralization是一个很好的选择。


当竞争者和你提供相同的功能,但速度更快时该怎么办?
当竞争者和你提供相同的功能,但速度更快时该怎么办?

再次回到之前5s搜索结果的例子。假设一个竞争者也带着相同的功能、相同的搜索结果、相同感觉的搜索服务进军市场。问题是他们的搜索出结果只需要2s。这时我们应用20%原则一点意义都没有。我们不是在和自己的时间竞争。相反,我们是在和竞争对手的时间竞争。我们可以在这里做几个逻辑假设:

  1. 我们没能力将时间降低到2s(如果可以,我们早就这样做了)。
  2. 如果两秒遥不可及,那接下来最好的办法就是竞争者的regression allowance的20%原则:2 seconds + 20% = 2.4 seconds.

2.4s内,用户完全感觉不到我们和竞争对手速度的差别。但是如果我们达不到2s,2.4s也可能达不到。

我们可以试图达到2s,或者竞争者的20% regression allowance
我们可以试图达到2s,或者竞争者的20% regression allowance

在我们比较这两个时间(2s和5s)时,我们能在它们之间找到一个“神奇”的心理阈值。当时间超过这个阈值时,我们会感觉它接近5s,时间低于阈值时我们感觉它接近2s。惊奇的是,在R. Church, M. MacInnis, P. Guilhardi和其他Brown大学生发起的关于动物时间的研究显示,这个阈值不是简单的两个时间段的中间值。这个阈值被发现是一个几何平均数,而不是算数平均数。人类上的研究也能证明这个结论。
在数学领域,我们还记得集合二分可以通过下面这个公式计算出来:
√(A × B)
所以我们可以得出:
√(2 × 5) ≈ 3.2 seconds
平方根就是中和的说明
平方根就是中和的说明

在2s和5s例子中,3.2s是中和的阈值。这种情况下,用户会察觉到差异,但这种差异不足以让用户切换到对方的服务上。服务的质量和可靠性等因素将发挥更重要的作用,但这些并非本文的介绍范围。
到此,就要结束对客观时间的介绍了。目前为止,我们已经熟悉了一些广泛应用的行业标准,如页面加载时间、系统响应时间。我们已经明确了如何制定一个性能预算,也了解了怎样提高自己的网站性能和如果跟竞争者的网站竞争。

之前就提到过,另一种比钟表时间更重要的是时间。朋友们,本系列第二部分将介绍心理时间。


原文链接:Why Performance Matters, Part 1: The Perception Of Time
原文作者:Denys Mishunov

“本译文仅供个人研习、欣赏语言之用,谢绝任何转载及用于任何商业用途。本译文所涉法律后果均由本人承担。本人同意简书平台在接获有关著作权人的通知后,删除文章。”
转载请注明本文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,378评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 今天听了Scalers的简单讲解,这小哥还蛮有意思的,年龄应该与我相差不大,人家却已经成长到如此地步,确实清华牛人...
    喵小园upup阅读 257评论 0 0
  • 三城生活,长在武汉,漂在深圳,辗转又来到了上海。 和这个时代的很多人一样,不知自己最终会在哪里择一城终老,“逃离你...
    彭焉阅读 366评论 0 2
  • 今天是农历二十五,接近春节,买东西的人也渐渐增多,貌似也没有往年的人多。 今天早上,轩妈来了,一直帮忙到了下午。 ...
    乐小Pi孩_VoV阅读 381评论 0 0