- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我目前正在研究图像编辑器,偶然发现了 V8 中有关像素操作和/或函数调用的奇怪行为。
http://jsperf.com/canvas-pixelwise-manipulation-performance
有两个测试用例。两个测试用例都应该操纵内存 Canvas 的图像数据以增加亮度。因此他们必须遍历每个像素并操纵每个像素的 4 个颜色值。
案例 1 “总共调用了 1 个函数”,这意味着它将上下文和 imageData 传递给一个函数,然后该函数遍历像素并处理数据。一站式功能
案例 2 执行“每个像素 1 次函数调用”,这意味着它遍历像素并为每个像素调用一个方法,然后操作给定像素的 imageData。这导致(在本例中)250000 次额外的函数调用。
我预计案例 1 比案例 2 快得多,因为案例 2 进行了 250000 次额外的函数调用。
在 Chrome 中,情况正好相反。如果我进行 250000 次额外的函数调用,它比处理所有图像操作的单个函数调用要快。
最佳答案
这两种代码都不会操纵任何 Canvas ,并且在基准循环中定义函数也没有任何意义。你想要的是永远不会重新创建的静态函数,这样一旦 JIT 优化了它们,它们就会保持优化状态。你不想要测量函数开销的创建,因为真实的应用程序只会定义函数一次。
修复基准代码后,它们应该以相同的速度运行,因为 manipulatePixel
函数将获得内联。
http://jsperf.com/canvas-pixelwise-manipulation-performance/4
我还创建了另一个 jsperf,我在其中有目的地操纵 V8 启发式* 而不是内联 manipulatePixel
功能:
http://jsperf.com/canvas-pixelwise-manipulation-performance/5
如您所见,它现在慢了 50%。 2 个 jsperfs 之间的唯一区别是 manipulatePixel
函数中的巨大注释。
*V8 查看raw textual size of the function (包括评论)作为内联决策的启发式。
关于javascript - V8引擎巫毒: Why is this faster/slower?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17343794/
有什么方法可以对 httpoison 的错误响应进行模式匹配吗?我就是这么做的 case HTTPoison.get!(url, [], []) do %HTTPoison.Error{reaso
我是一名优秀的程序员,十分优秀!