首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为V8优化CoffeeScript生成的JS

为V8优化CoffeeScript生成的JS
EN

Stack Overflow用户
提问于 2012-05-27 11:50:07
回答 1查看 397关注 0票数 2

以下简单代码片段的coffee-generated JS:

代码语言:javascript
代码运行次数:0
运行
复制
console.log 'b' if 'b' in arr

代码语言:javascript
代码运行次数:0
运行
复制
var __indexOf = [].indexOf || function(item) {
    for (var i = 0, l = this.length; i < l; i++) {
        if (i in this && this[i] === item) return i;
    } return -1;
};

if (__indexOf.call(arr, 'b') >= 0) {
  console.log('b');
}

我能理解为什么会这样。IE不支持indexOf,我们希望确保CS代码在所有浏览器上顺利运行。但是,在为Node.js服务器编写代码时,我们确切地知道JS引擎支持什么(ECMA-262,第五版),所以我们不需要上面的技巧。

我不太熟悉不同的JavaScript实现,但我确信这并不是coffee -c由于浏览器不兼容而产生的唯一非最佳代码,如果我们在具有数千个并发连接的生产服务器中考虑所有这些代码,它们会给代码增加相当大的不必要开销。

有办法补救吗?现在越来越多的Node.js代码是用CS编写的,随着SourceMap的出现,将会有更多的.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-27 12:12:33

这几乎不是最优的;__indexOf声明在开始时只计算一次,然后立即被解析为[].indexOf,即使用底层实现的Array.prototype.indexOf。当然,这并不是一笔巨大的开支。

我需要看到一些“非最优”代码的其他例子,但我确信它们中的大多数都落入了同一个篮子中。并发连接的数量根本无法扩展这一效果。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10773769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档