`
sunxg
  • 浏览: 13865 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Different Duff's device and normal loop test

 
阅读更多
/*
* 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)

    Direct Methods for Sparse Matrices (I. S. Duff, A. M. Erisman, J. K. Reid).pdf

    duff-porter_alpha混合_Thomas!_

    在计算机图形学领域,"duff-porter_alpha混合_Thomas!" 涉及到的是一个经典的技术,由Thomas Porter和Tom Duff两位先驱在早期发展起来的Alpha Blending技术。这项技术是现代计算机图形中透明和半透明效果的基础,...

    Duff&P----s-食品零售行业洞察2020年春季篇(英文)-2020.7-25页精品报告2020.pdf

    Duff&P----s-食品零售行业洞察2020年春季篇(英文)-2020.7-25页精品报告2020.pdf

    porter_duff:(C ++)OpenCV Porter Duff运算符

    波特-达夫算子奥斯汀·海斯特CS 6420-计算机视觉UMSL SP2021,Sanjiv Bhatia教授目的分配的目的是实现Porter-Duff运算符以合成图像。 操作员将通过驱动程序进行测试。 任务Porter-Duff运算符用于合成带有二进制掩码...

    duff:数据的东西,因此达芙

    标题中的“duff”可能是指一种特定的数据处理方法或工具,但给定的信息过于简洁,没有提供足够的背景来深入解释“duff”的具体含义。在IT行业中,"duff"这个词并不常见,可能是作者自创的术语,或者是某个项目、库...

    Porter-Duff:在Markdown中重写经典的Porter-Duff合成纸

    波特·达夫 一个闲置的项目,用嵌入式TeX重写了Markdown中经典的合成纸,以进行数学计算。 使用所需的任何内容进行编辑: 似乎可以应对。... 用于创建SVG格式图。 去做 需要从原始PDF中提取“点灰”图像并导入。...

    Numerical Analysis and Optimization

    Duff, A. Erisman, 和 J. Reid** 的《稀疏矩阵的直接方法》(Direct Methods for Sparse Matrices):讨论了处理大型稀疏线性系统的方法,这对于解决实际工程问题非常关键。 - **M. J. Baines** 的《移动有限元法》...

    duff.js:产生可用消息的差异工具

    用法 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 ...

    奇怪的C语言特性

    下面列出的特性未必奇怪,有的算是有趣。 1)a[2] 等价于 2[a] “aabbccdd”[5] 等价于 5[“aabbccdd”] 这条特性可以用于使用数组、指针、字符串,但不能用在变量定义时。...3)Duff’s Device http://en.wikipedia.or

    duff:用于查找重复文件的命令行工具-开源

    Duff 是一个 Unix 命令行实用程序,用于快速查找给定文件集中的重复项。 Duff 是用 C 编写的,应该在大多数现代 Unices 上构建和运行。

    DUFF: DUplicate File Finder-开源

    DUFF是Windows的(将是)一种工具,用于查找和处理计算机文件系统和/或网络上的重复文件。 它将具有许多内置和基于插件的文件比较层,重复标记和文件集处理程序。

    learn_c_the_hard_way:《艰难的学习c》中文翻译

    练习 23: Duff's Device 练习 24: 输入输出与文件 练习 25: 可变参数函数 练习 26: 编写第一个真正完整的C程序 练习 27: 编程的创新与保守 练习 28: Makefile项目构建文件 练习 29: 库和链接 练习 30: 自动化测试 ...

    Matlab频谱分析程序.pdf

    Matlab频谱分析程序是一个利用Matlab软件工具来进行信号频谱分析的程序。Matlab是一种广泛使用的高性能数值计算和可视化的编程环境,特别适合于工程、科学以及数学等领域。在频谱分析中,Matlab能够帮助用户实现信号...

    Jim Blinn's Corner_Compositing,Part1_Theory

    标题《Jim Blinn's Corner: Compositing, Part 1: Theory》和描述中提到的信息表明,本文是关于图像合成理论的讨论,这是由计算机图形学领域的先驱之一Jim Blinn所撰写的。Jim Blinn是加州理工学院的工作人员,而...

    多项式的计算

    在编程中,Duff's Device 或 Karatsuba 分解等优化技术可以提高计算效率。 除法操作更为复杂,因为多项式除法可能涉及到有理函数的表示。在计算机科学中,我们通常使用长除法算法,类似于我们在学校学习的整数除法...

    Margaret-Duff/PMP-Project-2017:使用 ioLight 便携式显微镜检测动物粪便寄生虫-matlab开发

    【标题】"Margaret-Duff/PMP-Project-2017" 是一个项目,它主要探讨了如何利用 ioLight 便携式显微镜来检测动物粪便中的寄生虫,并结合 MATLAB 进行数据分析和处理。ioLight 显微镜是一款小巧便携的设备,能够提供...

    scrip:带有上下文无关语法的借据

    脚本 Scrip 是一种使用解析表达式语法 (PEG) 和解析器(由生成)... Duff paid 500 on behalf of Buff,Gruff and Buff paid 1000 on behalf of Duff,Gruff 解析器结果 解析器接受上述语法的脚本并返回一个 JSON 响应,

    i.MX_6_G2D_API_User's_Guide.pdf

    2. **Alpha混合**:根据Porter-Duff规则对源和目标进行Alpha混合。 3. **高性能内存复制**:高效地从源复制到目标。 4. **缩放功能**:支持从源到目标的放大和缩小。 5. **旋转功能**:支持从源到目标的90度、180度...

Global site tag (gtag.js) - Google Analytics