繁体   English   中英

评论会影响绩效吗?

[英]Do comments affect performance?

我是否正确地说JavaScript代码没有编译,甚至不是JIT? 如果是这样,这是否意味着评论会对绩效产生影响,我应该非常小心地将评论放在哪里? 比如在可能的情况下在函数定义的上方和外部放置函数注释,并且如果我想最大化性能,肯定避免在循环中放置注释? 我知道在大多数情况下(至少在非循环的情况下),性能的变化可以忽略不计,但我认为这将是一个很好的知识和意识,特别是对于前端/ js开发人员。 另外,我最近对js评估提出了一个相关问题。

我是否正确地说JavaScript代码没有编译,甚至不是JIT?

虽然JavaScript传统上是一种“解释”语言(虽然它不一定必须如此),但大多数JavaScript引擎在必要时即时编译它。 V8(Chrome和NodeJS中的引擎)用于立即快速编译,然后返回并积极优化任何使用过的代码(旧的FullCodegen + TurboFan堆栈); 一段时间后, 他们做了大量的实际测量, 他们切换到最初解析为byteocde和解释,然后编译代码是否被重用(新的Ignition + TurboFan堆栈),通过不编译运行获得显着的内存节省-once设置代码。 即使是攻击性较低的引擎,几乎可以肯定至少会将文本解析为某种形式的字节码,尽早丢弃注释。

请记住,“解释”与“编译”通常更像是环境事物而不是语言事物; 有C语言解释器,还有JavaScript编译器。 语言往往与环境紧密相关(就像JavaScript与Web浏览器环境的关系一样,即使它总是被广泛使用,甚至早在1995年),但即便如此(如我们所见),可能有变化。

如果是这样,这是否意味着评论会对绩效产生影响......

在初始解析阶段,非常非常非常小的一个。 但评论很容易扫描过去,没有什么可担心的。

但是,如果您真的担心它,可以使用jsminClosure Compiler等工具缩小脚本(即使只进行简单的优化)。 前者只会删除评论和不必要的空白,这样的东西(仍然非常有效); 后者则认为实际上理解的代码,并做一些内联和等。 因此,您可以自由发表评论,然后使用这些工具确保使用缩小工具绕过首次加载脚本时这些注释可能产生的微小影响。

当然,关于JavaScript性能的事情是,很难可靠地预测跨引擎,因为引擎变化很大。 所以实验很有趣:

  • 这是一个实验(理论上)每次重新分配/重新创建函数
  • 这是一个只解析/创建一次函数并重用它的方法

结果? 我的看法是测试的测量误差中没有明显的差异。

评论的最大影响是膨胀文件大小,从而减慢脚本的下载速度。 因此,为什么所有专业网站都使用最小化器来生产高效版本,将js缩小到最小。

它可能会有一些影响。 虽然非常简约的效果(甚至IE6正确处理评论! 待确认...... )。

但是,大多数人使用缩小评论的缩小器。 所以没关系。

也:

V8通过在执行之前将JavaScript编译为本机机器代码来提高性能。

资源

可以防止内联函数 ,这会影响性能,但这不应该发生。

在某些可能是孤立的情况下,注释肯定会以某种方式阻碍代码执行。 我正在编写一个冗长的用户脚本,使用TamperMonkey在Mac上的最新Firefox中使用,并且当我从脚本中删除了冗长的评论并且突然脚本执行完全停止在Facebook上时,几天的日益沮丧的故障排除结束了。 在新用户帐户上运行相同的完整脚本的多个来回比较,唯一的区别是评论,证明了这种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM