2

我正在使用 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

编辑:经过一些性能测试,我发现方法是否被链接并不重要。(一次更快,另一次更快)

4

1 回答 1

3

像这样的链接方法可以提高性能,但仅在您使用的 API 被构建为提供此功能的有限场景中。想到的第一个例子是 jQuery。

调用 $("#test") 需要时间来返回引用 #test 的 jquery 对象。

当您链接一个方法时,它会重用该对象。

看看我做的这个测试作为例子。

http://jsperf.com/chaining-demo

于 2013-03-22T14:59:54.203 回答