Javascript程序优化(2)
作者:Grace 来源:Grace 发布时间:2008-06-02 13:12:00
标签:程序,javascript,优化
选择正确的算法
这似乎就是废话,所有的程序员都明白正确的算法对于之行效率是多么的重要。这里就不多解释,可以参考这篇和这篇。我始终相信,好的经验都是在实际 coding 中获得的。
循环的花招
Javascript 和大部分的程序语言一样,循环都会花费大量的执行时间,所以保持循环的高效可以减少执行时间。下面有几个花招,也是从那本书中获得的,照本宣科一下。
反转循环
有一个很有趣的例子,比如一个典型的循环会是这样写
for (var i = 0; i < element.length; i++) {
// ...
}
但写成下面这个样子就有助于降低算法的复杂度,因为它用常数(O)作为条件循环以减少执行时间
for (var i = element.length - 1; i >= 0; i--) {
// ...
}
书中的解释可能无法理解,那么我重新将其写成
var element_length = element.length;
for (var i = 0; i < element_length; i++) {
// ...
}
可能会更好理解一些,因为它不会重复在循环中获取 element 的 length 属性,但书中的更改方法少了一个变量。
翻转循环
用 do...while 来替代 while 语句可以进一步的减少执行时间。比如
var i = 0;
while (i < element.length) {
// ...
i++;
}可以改写为 do...while 语句为这个样子
var i = 0;
do {
// ...
i++;
} while (i < element.length);当然,按照上一条的花招我们还可以优化成这个样子
var i = element.length - 1;
do {
// ...
} while (--i >= 0);
这是因为 do...while 语句事先将循环体载入以后再做条件判断。不过本人认为还是保持程序的逻辑优先。


猜你喜欢
- 我有一个2D(二维) NumPy数组,并希望用255.0替换大于或等于阈值T的所有值。据我所知,最基础的方法是:shape = arr.sh
- 前言没有特别幸运,那么请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。你必须特别努力,才能显得毫不费力。希望:所以说,树倒了,没
- 本文实例讲述了python socket多线程通讯方法。分享给大家供大家参考,具体如下:#!/usr/bin/evn python"
- 1. 用grep函数 函数名 grep 调用语法 @foundlist = grep (pattern, @searchlist); 解说
- 我们知道numpy的array是可以保存到文件的,一个常用的做法是通过to_file()保存到而进行.bin文件中,然后再通过from_fi
- response.getWriter().write() 功能:向前台页面显示一段信息。当在普通的url方式中,会生成一个新的页面来显示内容
- 前面的话在介绍Date对象之前,首先要先了解关于日期和时间的一些知识。比如,闰年、UTC等等。深入了解这些,有助于更好地理解javascri
- javascript中的数组对象捆绑了强大的方法因此它可以用很简短的代码实现强大的数组操作而这些功能要C或者c++实现的话可能需要花费几倍的
- 要达到如下目的:Mysql数据库会每隔一段时间(可以是2小时,也可以是一天,这个可以自定义),定时对一张库中的表做一个判断,如果这张表的数据
- 程序流Python 解释器在其最简单的级别,以类似的方式操作,即从程序的顶端开始,然后一行一行地顺序执行程序语句。例如,清单 1 展示了几个
- python是支持多线程的,主要是通过thread和threading这两个模块来实现的。thread模块是比较底层的模块,th
- 用js实现漂亮的雪花飘过效果:步骤:页面基本样式,雪花旋转动画效果body{ width: 100vw; height: 100vh; ba
- 这个问题对于规模稍微大些的项目而言,显得尤其重要了,数据库中如果有几百个存储过程, 难道还一个个找不成,即使自己很了解业务和系统,时间长了,
- 周六。据闻北服美女甚多,于是应邀去做了一个关于UED的讲座。人不多,讲的很乱,但大家听的很认真,欣慰。讲完之后回答了很多关于社区、搜索、设计
- 一、属性的设置和获取1、属性的设置和获取主要有两种方式:<!DOCTYPE html><html lang="e
- import webbrowser as webimport timeimport oscount=0while count<10:&
- 设置字段可选在摆弄了一会之后,你或许会发现管理工具有个限制:编辑表单需要你填写每一个字段,然而在有些情况下,你想要某些字段是可选的。 举个例
- 爬虫是大家公认的入门Python最好方式,没有之一。虽然Python有很多应用的方向,但爬虫对于新手小白而言更友好,原理也更简单,几行代码就
- 本文实例讲述了python实现bucket排序算法。分享给大家供大家参考。具体实现方法如下:def bucketSort(a, n, buc
- 本文实例讲述了PHP采集静态页面并把页面css,img,js保存的方法。分享给大家供大家参考。具体分析如下:这是一个可以获取网页的html代