我正在使用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
编辑:经过一些性能测试后,我发现方法是否被链接并不重要。 (一次更快,另一次更快)
答案 0 :(得分:3)
这样的链接方法可以提高性能,但仅限于您正在使用的API构建为提供此功能的有限场景。想到的第一个例子是jQuery。
调用$(“#test”)需要时间来返回引用#test的jquery对象。
当你链接一个方法时,它会重用该对象。
看看我做的这个测试作为一个例子。