高性能JS笔记4——算法和流程控制

一、循环

for、while、do while三种循环的性能都没有多大区别。foreach 的性能较其他三种差 。

既然循环没有多大区别,注意循环内的代码控制。

减少迭代次数。

减少迭代工作量。

推荐写法:

for(int i=0, l = array.length; i < l; i++)
{
   int v = array[i];
};

二、条件语句

if else 和 switch语句较少时,if else较易读。分支多时,从性能或易读上都倾向于switch。

优化条件语句:

最小化到达正确分支前的条件数量;

把多个if else 组合成一个;

把多个if else 组合成一个系列嵌套的组合;

将查找值存放到查找表或数组,减少查找次数。

三、递归

使用Memoization缓存前一个计算结果供后面计算使用。

使用Memoization重写 factorial()函数,代码如下:

funtion memfactorial(n)
{
    if(!memfactorial.cache)
    {
        memfactorial.cache={
            "0":1, "1":1
        };
    }

    if(!memfactorial.cache.hasOwnProperty(n))
    {
        memfactorial.cache[n]= n* memfactorial.cache[n-1];
    }

   return memfactorial.cache[n];
}
时间: 2024-10-29 19:06:28

高性能JS笔记4——算法和流程控制的相关文章

Java学习笔记之:Java流程控制

一.介绍 Java流程控制包括顺序控制.条件控制和循环控制. 顺序控制,就是从头到尾依次执行每条语句操作.条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操作A,反之则执行操作B.循环控制,又称为回路控制,根据循环初始条件和终结要求,执行循环体内的操作. 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支结构. Java有两种分支结构: if语句 switch语句 Java中有三种主要的循环结构: while循环 do…while循环 for循环

Node.js 实现串行化流程控制

为了演示如何实现串行流程控制,我们准备做个小程序,让它从一个随机选择的RSS预定源中获取一片标题和URL,并显示出来. RSS预定源列表放在rss_feeds.txt文件中,内容如下: http://feed.cnblogs.com/blog/u/376823/rss http://lambda-the-ultimate.org/rss.xml 运行程序前我们需要安装两个模块:request模块是个经过简化的HTTP客户端,你可以用它获取RSS数据.htmlparser模块能把原始的RSS数据转

高性能javascript学习笔记系列(4) -算法和流程控制

参考高性能javascript for in 循环  使用它可以遍历对象的属性名,但是每次的操作都会搜索实例或者原型的属性 导致使用for in 进行遍历会产生更多的开销 书中提到不要使用for in 遍历数组 1 首先for in 会查找原型链上的属性 var arr = [1,2,3]; Array.prototype.a = "test"; for(var i in arr) { console.log(i); console.log(typeof i); }//在这里例子中会发

Python学习笔记(三)-流程控制(while循环)

While循环: Python流程控制中的while循环,直到表达式变为假才会结束.表达的是一个逻辑表达式,必须返回一个true或false语法如下:while expression: statement(s) #请注意while循环也是要遵循代码缩进原则的 while后接true条件: print '' #始终为true,会进入死循环,一直print打印..,没有实际意义.. 那么,我们在设计Python程序时就要设置一个条件,使程序终止,而不是直接Ctrl+C去终止程序..下面看实例: 1

高性能JS笔记3——DOM编程

一.访问与修改DOM DOM和JS 相当于两个岛屿,访问操作的次数越多,要交的过路费越多,对性能产生很大影响. 减少访问DOM的次数,把运算尽量留在JS端操作. 二.innerHTML 对比 DOM 方法 1.对于原生的DOM方法和innerHTML比较,性能相差无几. 2.对于大量操作,针对不同浏览器,性能不一样,因此取决于经常用的浏览器. 3.建议从可读性.稳定性.编码习惯来决定使用哪种方式.在对字符串经过优化后,innerHTML性能可以得到大幅提升. 三.操作上的优化 1.节点克隆 例如

JavaScript的算法和流程控制

代码的整体结构是影响运行速度的主要因素之一.代码数量少一定原型速度快,代码数量多却不意味着运行速度一定慢. 1. 循环 类型: 1) for由初始化.前测条件.后执行体.循环体组成: for(var i=0;i<10;i++) {循环体}  => for(var i=0,j=10;i<j;i++) {} 2) while由前测条件和循环体组成:var i=0; while(i<10){循环主体 i++;} 3) do-while由后测条件和循环体组成, 循环体会至少运行一次操作,再

高性能JS笔记1——加载执行

一.脚本位置 1.Script标签尽可能放到Body底部,以减少脚本文件下载对整个页面UI渲染的影响. 2.Script标签永远不要紧跟Link标签后面. 二.组织脚本 1.合并多个文件在一个Script中加载: <script type="text/javascript" src="/scripts/jquery.min.js&/scripts/jquery.validation.js"></script> 三.无阻塞的脚本 1.无

java基础笔记(2)----流程控制

java流程控制结构包括顺序结构,分支结构,循环结构. 顺序结构: 程序从上到下依次执行,中间没有任何判断和跳转. 代码如下: package com.lvsling.test; public class Test1 { public static void main(String[] args) { System.out.println("你好!"); System.out.println("世界!"); } } 分支结构: 分支结构图如下: If分支: if语句

C#学习笔记(三)&mdash;&mdash;流程控制

一.布尔逻辑 1.与布尔有关的2元运算符 2.布尔运算符 PS:"&"与"&&"之类的区别 (1)"&"是按位运算,也就是说是将2个数都转换成2进制,然后逐个进行与操作的,然后将每位的结果再放在一起得到的. (2)"&&"则是直接对整个数值已经与或,即是0就是假,不是0就为真,而且还有逻辑短路的现象存在. Example:       使用布尔变量的一个example 3.运算符