【发布时间】:2013-03-22 14:23:20
【问题描述】:
我正在使用一个 javascript API,我看到了这句话:
由于 JavaScript 是一种脚本语言,每一行代码都会占用宝贵的处理器时间。提高处理器时间的一种方法是链接方法调用以减少代码行数。 esri.Graphic 和 esri.symbol.* 等对象提供了返回对象本身的 setter 方法,允许链接方法。
效率较低:
var symbol = new esri.symbol.SimpleMarkerSymbol();
symbol.setSize(10);
symbol.setColor(new dojo.Color([255,0,0]));
更高效:
var symbol = new esri.symbol.SimpleMarkerSymbol().setSize(10).setColor(new dojo.Color([255,0,0]));
在链接方法调用时,您需要确定代码的效率和可读性之间的平衡。如果您避免链接,您的代码可能会更易读和维护;但是,您将失去链接提供的性能优势。
我理解在 Java 中,编写链式方法与方法堆栈应该编译成相同的字节码。然而,既然这是一种脚本语言,这真的站得住脚吗?另外,如果确实如此,是否值得牺牲代码的可读性来实现该部分代码的性能?
关于我从哪里得到这个文本的参考:http://help.arcgis.com/en/webapi/javascript/arcgis/jshelp/inside_graphics.html
编辑:经过一些性能测试,我发现方法是否被链接并不重要。 (一次更快,另一次更快)
【问题讨论】:
-
对我来说听起来很垃圾。
-
你为什么不测试一下:jsperf.com
-
我持怀疑态度,尤其是当大多数现代浏览器在执行之前将 JS 编译为机器码。
-
jsperf.com/chaining-performance-test 是我做的,到目前为止它几乎没用,一个运行链更好,另一个不链更好。
标签: javascript performance method-chaining