我目前正在研究图像编辑器,并在V8中偶然发现了关于像素操作和/或函数调用的奇怪行为.
http://jsperf.com/canvas-pixelwise-manipulation-performance
有两个测试用例.两个测试用例都应该操作内存中画布的图像数据以增加亮度.因此,他们必须迭代每个像素并操纵每个像素的4个颜色值.
情况1执行"总共1个函数调用",这意味着它将上下文和imageData传递给函数,然后迭代像素并操纵数据.一体化功能
情况2执行" 每个像素 1次函数调用",这意味着它迭代像素并为每个像素调用一个方法,然后操纵给定像素的imageData.这导致(在这种情况下)250000个额外的函数调用.
我希望案例1比案例2快得多,因为案例2正在进行250000个额外的函数调用.
在Chrome中,它恰恰相反.如果我执行250000个额外的函数调用,它比处理所有图像处理的单个函数调用更快.