Javascript链接方法和处理时间
Javascript chaining methods and processing time
我正在使用javascript API,我看到了这句话:
因为JavaScript是一种脚本语言,每行代码都会占用宝贵的处理器时间。改善处理器时间的一种方法是链式方法调用,以减少代码行数。对象,如esri。图形和esri符号。*提供返回对象本身的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中,写一个链方法vs方法堆栈应该编译成相同的字节码。然而,由于这是一种脚本语言,这真的站得住脚吗?而且,如果是这样,是否值得为了这段代码的性能而牺牲代码的可读性呢?
关于我从哪里得到这篇文章的参考:http://help.arcgis.com/en/webapi/javascript/arcgis/jshelp/inside_graphics.html
编辑:经过一些性能测试,我发现方法是否链接并不重要。(一次一个更快,另一次更快)
这样的链接方法可以提高性能,但仅在您使用的API是为提供此功能而构建的有限场景中。我想到的第一个例子是jQuery。
调用$("#test")需要时间来返回引用#test的jquery对象。
当你链接一个方法时,它会重用那个对象。
看看我做的这个测试作为一个例子。
http://jsperf.com/chaining-demo相关文章:
- 如何在此函数中添加处理时间
- Android原生浏览器中的dom处理时间太长
- 我如何在jQuery.Ajax中处理时间响应(DataType:JSON)
- 使用setTimeout可以在进行数据输入时推迟时间密集型处理
- 如何获取javascript/dom加载和处理时间的指标
- 无法让悬停事件使用 jQuery UI 持续时间参数或 CSS 处理目标元素的同级元素
- 更新网页上的计时器,并保持经过的时间--如何处理
- 如何处理php(Laravel-api)和javascript(AngularJS)之间的日期时间
- 为什么 JavaScript 可以处理 2038 年以后的时间戳
- 处理日期时间时间戳javascript(angularjs)和mongo的滑块
- 以 UTC 格式的 SQL 处理日期/时间
- 哪个 JS 日期时间选取器正确处理 DST 转换
- 在同一持续时间内对两个属性进行动画处理
- 剑道日期时间选取器不处理 UTC 偏移量
- 使用 JavaScript Date 对象处理未来和过去的日期和时间
- 使用套接字io和angularjs处理频繁变化的时间序列数据的策略
- 随着时间的推移,JavaScript 的 setInterval() 方法运行是否会消耗明显的处理能力
- 设置页面加载处理时间
- 如何处理时间冲突
- Javascript链接方法和处理时间