• 《高性能Javascript》 Summary(二)


     

    第四章、算法和流程控制 Algorithms And Flow Control

    原因:代码整体结构是执行速度的决定因素之一。代码量少不一定运行速度快,代码量多不一定运行速度慢。性能损失与组织代码和具体问题解决办法直接相关。

    解决:

    1. 与其他编程语言一样,代码的写法和算法选用影响JavaScript的运行时间。与其他编程语言不同是,JavaScript可用的资源有限,所以优化的技术更为重要。
    2. For, While, Do while循环特性相似,谁也不必谁更快或更慢。
    3. 除非迭代遍历一个未知的属性, 否则不用for in 循环(效率低)
    4. 一般来说,switch if else 效率高,但判断条件少时用if else结构更好。
    5. 当判断条件多时,查表法比if else或者switch速度更快。
    6. 浏览器调用栈尺寸限制了递归算法在JavaScript中的应用,栈溢出错误导致其他代码也不能正常执行。
    7. 如果遇到栈溢出错误,将方法修改为一个迭代算法或者使用制表法可以避免重复工作。
    8. 运行的代码总量越大,使用这些策略带来的性能提升越明显。

     

     

    第五章、字符串和正则表达式 String and Regular Expressions

    问题: 密集的字符串操作和粗劣的编写正则表达式可能是主要的性能障碍。

    解决:

    1. 当连接数量巨大或者尺寸巨大的字符串时,数组联合是IE7和它早期版本上唯一具有合理性能的方法。
    2. 如果不关心IE7和早期版本,数组联合则是最慢的方法之一。使用简单的++=取而代之,可以避免产生不必要的中间字符串。
    3. 回溯既是正则表达式匹配功能的基本组成之一,又是正则表达式影响效率的常见原因。
    4. 避免回溯失控:使用邻字元互斥,避免嵌套量词对一个字符串的相同部分多次匹配,通过重复利用前瞻操作的原子特性除去不必要的回溯。
    5. 正则表达式不总是完成工作的最佳选择,比如当你搜索一个字符串的时候。

     

    第六章、响应接口 Responsive Interfaces

    问题: 网页应用程序响应的速度是一个重要的性能关注点。

    建议:

    1. Javascript运行时间不能超过100毫秒,过长的运行时间可能导致UI更新出现可观察的延迟,从而对整体用户体验产生负面影响。
    2. Javascript运行期间,浏览器响应用户交互的行为存在差异。无论无何,Javascript长时间运行将导致用户混乱和脱节。
    3. 定时器可用于安排代码推迟执行,它使得你可以将长运行脚本分解成一系列较小的任务。
    4. 网页工人线程(worker)是新式浏览器才支持的特性,他允许你在UI进程之外运行Javascript代码和避免锁定了UI
    5. 网页程序越复杂,积极主动的管理UI线程就越显得重要。没有什么Javascript代码可以重要到允许影响用户体验的程度。

     

    第七章、Ajax --异步的Javascript xml

    问题: Ajax是高性能Javascript的基石。他可以通过延迟下载和异步下载,是页面加载更快。

    建议:

    1. 作为数据格式,纯文本和HTML是高度限制的,但他们可以节省客户端CPU周期。XML被广泛应用普遍支持,但它非常冗长且解析缓慢。JSON是轻量级的,解析迅速,交互性与XML相当。字符分隔的自定义格式非常轻量,在大量数据解析时速度最快,但需要编写额外的程序在服务器端构造格式,并在客户端解析。
    2. 当从页面域请求数据时,XML提供最完善的控制和灵活性,尽管它将所有传入的数据视为一个字符串,这有可能降低解析速度。另一方面,动态脚本标签插入技术允许跨域请求和本地运行JavascriptJson,虽然它的接口不够安全,而且不能读取信息头或响应报文代码。多部分的XHR可以减少请求的数量,可以在单次响应中处理不同的文件类型,尽管它不能缓存到响应报文中。当发送数据时,图像灯标(使用image标签发送请求)是最简单和最有效的方法。XHR也可以用POST发送大量数据。
    3. 减少请求数量,可通过JavascriptCSS文件打包,或者使用XHR
    4. 缩短页面的加载时间,在页面其他内容加载之后,使用Ajax获取少量重要文件。
    5. 确保错误代码不要直接显示给用户,并在服务器端处理错误。
    6. 学会何时使用一个健壮的Ajax库,何时编写自己的底层Ajax代码。

     

    《高性能Javascript》 Summary(三)

  • 相关阅读:
    yml 配置文件注入
    STS 自动生成 getter 和 setter
    maven build 失败
    navicat 使用
    STS 设置 注解提示
    windows下安装Mysql
    安装 mysql
    用Navicat Premium 操作MySQL数据库
    渐变显示渐变消失的BackgroundView
    基于dispatch_after封装YXTimer
  • 原文地址:https://www.cnblogs.com/zzd0916/p/11045595.html
Copyright © 2020-2023  润新知