小米科技|以其他组件为代价的性能提升不是好提升

小米科技|以其他组件为代价的性能提升不是好提升

文章图片

小米科技|以其他组件为代价的性能提升不是好提升

文章图片


在操作系统的开发中 , 我们必须对系统性能有一个整体的看法 。 系统设计者的目标是:让整个系统运行得更快 , 同时在各个应用程序的运行速度上取得一定的平衡 。
另一方面 , 应用程序往往对性能抱有自私的看法:”我会尽一切可能让自己跑得更快 。 对系统其余部分的影响也不是我关心的 。 ”
一些应用程序会将自己放入开机自动启动组中 , 以便更快地加载 。这并没有真正让系统运行得更快 。它只是在转移启动的阶段而已 。 通过将一些应用程序启动成本投入到操作系统启动中 , 虽然用户双击应用程序图标和应用程序准备运行之间的时间减少了 , 但总时间没有改变 。
例如 , 考虑下面的时间图 。“*”标记用户打开计算机的时间点 , ”+”标记资源管理器准备就绪并且用户双击应用程序图标的时间点 , ”!”标记应用程序准备就绪的时间点 。

【小米科技|以其他组件为代价的性能提升不是好提升】然后应用程序开发人员说:“天哪 , 那个粉红色的‘应用程序启动’部分非常大 。我们能做些什么来让它更小? 我知道 , 让我们将应用程序启动分成两部分……

并将其中的一部分放在 Startup 组中 。

“哇 , 看 , 粉红色条的大小(代表我们的应用程序在用户双击图标后准备就绪所需的时间)现在要短得多!” 然后团队将这个新的较短的值放入他们的绩效状态报告中 , 每个人都得到加薪 , 也许他们去吃一顿丰盛的晚餐来庆祝 。
当然 , 纵观全局 , 从星号一直到感叹号 , 一切都没有改变 。 应用程序从冷启动准备就绪仍然需要相同的时间 。 所有这些性能改进只不过是拆东墙补西墙而已 。 执行“应用程序启动 1”所花费的时间现在计入操作系统而不是应用程序 。 你四处打乱数字 , 但最终用户一无所获 。
对于上面的图表 , 假设用户想要运行您的应用程序! 如果用户不想运行你的应用程序 , 而只是想查看他们的电子邮件 , 那么他们会为“应用程序启动 1”付费 , 即使他们不会获得任何好处 。
另一个对性能有自私看法的应用程序示例来自一家开发图标覆盖处理程序(icon overlay handler)的公司 。外壳将覆盖计算视为低优先级项目 , 因为在屏幕上显示图标更为重要 , 这样用户就可以开始做他们想做的任何事情 。
这家公司想知道是否有一种方法可以提高他们的性能 , 甚至在图标出现之前就将其覆盖在屏幕上 , 展示对“性能”的一种非常自私的解释 。
性能是关于让用户更快地完成他们的任务 。如果该任务不涉及运行你的程序 , 那么你的“性能改进”确实是性能障碍 。我相信你的程序非常好 , 但是如果期望每个安装你的程序的用户都认为它应该优先于他们所做的一切 , 那也是相当冒昧的 。
总结还是那句话:以人为本 , 以用户为中心 。
在我们瞎折腾代码之前 , 先换位思考一下:如果我是使用这个软件的用户 , 我的感觉是什么?会不会骂娘?
切勿钻进技术的牛角尖里!
最后Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《Performance gains at the cost of other components》