/*
* This is a test to check the performance of different Duff's device and normal loop
*/
var myArray = new Array(1000033);
var myArray1 = new Array(1000033);
var myArray2 = new Array(1000033);
// Jeff Greenberg's implementation of Duff's device
function jeffDuff(){
var iterations = Math.ceil(myArray.length / 8),
startAt = myArray.length % 8,
i = 0;
do {
switch(startAt){
case 0: myArray[i++] = i;
case 7: myArray[i++] = i;
case 6: myArray[i++] = i;
case 5: myArray[i++] = i;
case 4: myArray[i++] = i;
case 3: myArray[i++] = i;
case 2: myArray[i++] = i;
case 1: myArray[i++] = i;
}
startAt = 0;
} while (--iterations > 0);
}
// Andrew B. King's implementation of Duff's device
function kingDuff(){
var iterations = Math.floor(myArray1.length / 8),
leftover = myArray1.length % 8,
i = 0;
if (leftover > 0){
do {
myArray1[i++] = i;
} while (--leftover > 0);
}
do {
myArray1[i++] = i;
myArray1[i++] = i;
myArray1[i++] = i;
myArray1[i++] = i;
myArray1[i++] = i;
myArray1[i++] = i;
myArray1[i++] = i;
myArray1[i++] = i;
} while (--iterations > 0);
}
// normal loop
function normalLoop(){
for(var i=0, len=myArray2.length;i<len;i++){
myArray2[i++] = i;
}
}
console.time("normalLoop");
normalLoop();
console.timeEnd("normalLoop");
console.time("kingDuff");
kingDuff();
console.timeEnd("kingDuff");
console.time("jeffDuff");
jeffDuff();
console.timeEnd("jeffDuff");
// release memory
myArray = null;
myArray1 = null;
myArray2 = null;
分享到:
相关推荐
Direct Methods for Sparse Matrices (I. S. Duff, A. M. Erisman, J. K. Reid).pdf
在计算机图形学领域,"duff-porter_alpha混合_Thomas!" 涉及到的是一个经典的技术,由Thomas Porter和Tom Duff两位先驱在早期发展起来的Alpha Blending技术。这项技术是现代计算机图形中透明和半透明效果的基础,...
Duff&P----s-食品零售行业洞察2020年春季篇(英文)-2020.7-25页精品报告2020.pdf
波特-达夫算子奥斯汀·海斯特CS 6420-计算机视觉UMSL SP2021,Sanjiv Bhatia教授目的分配的目的是实现Porter-Duff运算符以合成图像。 操作员将通过驱动程序进行测试。 任务Porter-Duff运算符用于合成带有二进制掩码...
标题中的“duff”可能是指一种特定的数据处理方法或工具,但给定的信息过于简洁,没有提供足够的背景来深入解释“duff”的具体含义。在IT行业中,"duff"这个词并不常见,可能是作者自创的术语,或者是某个项目、库...
波特·达夫 一个闲置的项目,用嵌入式TeX重写了Markdown中经典的合成纸,以进行数学计算。 使用所需的任何内容进行编辑: 似乎可以应对。... 用于创建SVG格式图。 去做 需要从原始PDF中提取“点灰”图像并导入。...
Duff, A. Erisman, 和 J. Reid** 的《稀疏矩阵的直接方法》(Direct Methods for Sparse Matrices):讨论了处理大型稀疏线性系统的方法,这对于解决实际工程问题非常关键。 - **M. J. Baines** 的《移动有限元法》...
用法 var Duff = require ( 'duff.js' ) var result = Duff . duff ( ORIGNAL_OBJECT , TARGET_OBJECT , OPTIONS ) result . errors // array of error messages result . value // boolean value specifying ...
下面列出的特性未必奇怪,有的算是有趣。 1)a[2] 等价于 2[a] “aabbccdd”[5] 等价于 5[“aabbccdd”] 这条特性可以用于使用数组、指针、字符串,但不能用在变量定义时。...3)Duff’s Device http://en.wikipedia.or
Duff 是一个 Unix 命令行实用程序,用于快速查找给定文件集中的重复项。 Duff 是用 C 编写的,应该在大多数现代 Unices 上构建和运行。
DUFF是Windows的(将是)一种工具,用于查找和处理计算机文件系统和/或网络上的重复文件。 它将具有许多内置和基于插件的文件比较层,重复标记和文件集处理程序。
练习 23: Duff's Device 练习 24: 输入输出与文件 练习 25: 可变参数函数 练习 26: 编写第一个真正完整的C程序 练习 27: 编程的创新与保守 练习 28: Makefile项目构建文件 练习 29: 库和链接 练习 30: 自动化测试 ...
Matlab频谱分析程序是一个利用Matlab软件工具来进行信号频谱分析的程序。Matlab是一种广泛使用的高性能数值计算和可视化的编程环境,特别适合于工程、科学以及数学等领域。在频谱分析中,Matlab能够帮助用户实现信号...
标题《Jim Blinn's Corner: Compositing, Part 1: Theory》和描述中提到的信息表明,本文是关于图像合成理论的讨论,这是由计算机图形学领域的先驱之一Jim Blinn所撰写的。Jim Blinn是加州理工学院的工作人员,而...
在编程中,Duff's Device 或 Karatsuba 分解等优化技术可以提高计算效率。 除法操作更为复杂,因为多项式除法可能涉及到有理函数的表示。在计算机科学中,我们通常使用长除法算法,类似于我们在学校学习的整数除法...
【标题】"Margaret-Duff/PMP-Project-2017" 是一个项目,它主要探讨了如何利用 ioLight 便携式显微镜来检测动物粪便中的寄生虫,并结合 MATLAB 进行数据分析和处理。ioLight 显微镜是一款小巧便携的设备,能够提供...
脚本 Scrip 是一种使用解析表达式语法 (PEG) 和解析器(由生成)... Duff paid 500 on behalf of Buff,Gruff and Buff paid 1000 on behalf of Duff,Gruff 解析器结果 解析器接受上述语法的脚本并返回一个 JSON 响应,
**Duffing方程详解与MATLAB实现及相图绘制** Duffing方程是一种非线性动力学方程,广泛应用于物理、工程、生物等多个领域,用来描述系统的非线性振动现象。它以荷兰物理学家J.C.A. Duffing的名字命名,是研究混沌、...