`
sunxg
  • 浏览: 13752 次
  • 性别: 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;
分享到:
评论

相关推荐

    duff-porter_alpha混合_Thomas!_

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

    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&P----s-食品零售行业洞察2020年春季篇(英文)-2020.7-25页精品报告2020.pdf

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

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

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

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

    波特-达夫算子奥斯汀·海斯特CS 6420-计算机视觉UMSL SP2021,Sanjiv Bhatia教授目的分配的目的是实现Porter-Duff运算符以合成图像。 操作员将通过驱动程序进行测试。 任务Porter-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