第十章:本章主要介绍优化性能工具的使用,具体内容可以看原文,这里只是简单的叙述一下。

第十章 Tools 工具

本章主要介绍优化性能工具的使用,具体内容可以看原文,这里只是简单的叙述一下。

  • Profiling 性能分析:
    在脚本运行期定时执行不同函数和操作,找出需要优化的部分。
  • Network analysis 网络分析:
    检查图片,样式表,和脚本的加载过程,汇报它们对整个页面加载和渲染的影响。

  • 在调整代码之前,您应该确保脚本和其他资源的加载过程已经优化过了。图片和样式表加载会影响脚本加载,这取决于浏览器允许多少并发请求,有多少资源需要加载。
  • YUI 分析器(http://developer.yahoo.com/yui/profiler/),由 Nicholas Zakas 提供,是用 JavaScript 编写的
    JavaScript 分析器。除了计时功能,它还提供了用于函数、对象、和构造器的性能分析接口,还包括性能分析数据的详细报告。它可以跨浏览器工作,其输出数据可提供更强大的报告和分析。YUI 分析器提供一个通用定时器用于收集性能数据。Profiler 提供一些静态函数,用于启动和停止命名定时器,以及获取性能数据。
    1
    2
    3
    4
    5
    6
    7
    var count = 10000, i, element;
    Y.Profiler.start('createElement');
    for (i = 0; i < count; i++) {
    element = document.createElement ('div');
    }
    Y.Profiler.stop('createElement');
    alert('created ' + count + ' in ' + Y.Profiler.getAverage('createElement') + 'ms');

函数分析只需要注册一下。注册的函数被收集性能数据的代码调用。例如,要分析第二章提到的全局
initUI 方法,仅仅需要传入它的名字:

1
Y.Profiler.registerFunction("initUI");


  • 使用匿名函数或函数分配会造成分析器的数据模糊。由于这是 JavaScript 的通用模式,许多被分析的函数可能是匿名的, 对它们测量和分析很困难或根本无法进行。 分析匿名函数的最佳办法是给它们取个名字。使用指针指向对象方法而不是闭包,可以实现最广泛的分析覆盖。

Summary 总结


当网页或应用程序变慢时,分析网上传来的资源,分析脚本的运行性能,使你能够集中精力在那些需要努力优化的地方。

  • 使用网络分析器找出加载脚本和其它页面资源的瓶颈所在,这有助于决定哪些脚本需要延迟加载,或者进行进一步分析。
  • 传统的智慧告诉我们应尽量减少 HTTP 请求的数量,尽量延迟加载脚本以使页面渲染速度更快,向用户提供更好的整体体验。
  • 使用性能分析器找出脚本运行时速度慢的部分,检查每个函数所花费的时间,以及函数被调用的次数,通过调用栈自身提供的一些线索来找出哪些地方应当努力优化。
  • 虽然花费时间和调用次数通常是数据中最有价值的点,还是应当仔细察看函数的调用过程,可能发现其它优化方法。

这些工具在那些现代代码所要运行的编程环境中不再神秘。在开始优化工作之前使用它们,确保开发时间用在解决问题的刀刃上。