gpt4 book ai didi

javascript - 为什么缩小或混淆的JavaScript比未压缩的代码性能更差?

转载 作者:行者123 更新时间:2023-12-03 08:05:37 24 4
gpt4 key购买 nike

我遇到了使用各种压缩器和混淆器压缩的JavaScript代码this performance report。令人惊讶的是,除了Closure高级模式外,在大多数情况下,所有其他压缩程序输出的代码都比未压缩的代码执行更差。我们如何解释呢?

向下滚动到page的末尾以查看报告。这是屏幕截图:



图例:

  • 蓝色-YUI Compressor
  • 红色-闭包(高级模式)
  • 橙色-闭合(基本模式)
  • 绿色-JS Min
  • 紫色-JS Packer
  • 浅蓝色-UglifyJS
  • Pink-未压缩的代码
  • 最佳答案

    首先让我扮演魔鬼的提倡者:代码实际上并没有“执行”任何东西(除了JS Packer,我的意思不是什么严重的意思)。它本质上是对功能,对象和属性的定义。

    JS Packer不会生成JavaScript代码,而是会在运行时解压缩压缩文本。这就是为什么它慢得多的原因。使用高级优化功能的Google Closure会尽可能替换标识符。因此,在解析脚本时已经具有性能优势。

    也就是说,可能会牺牲代码大小的性能。一个示例是将truefalse替换为!0!1。它取决于JavaScript引擎。引擎可以在第一次调用之前对其进行优化,之后,在某些调用之后,永远不会...谁知道;)

    新发现

    在此期间,我进行了一些分析,并意识到我忘记了一件事:垃圾收集。这种影响足以解释脚本和浏览器(不同的引擎!)之间的某些差异。

    将其与代码执行不了并且您拥有某些东西的事实结合起来。在一个测试中,我有3%的未压缩垃圾回收CPU时间和JSMin的9%(!)。对于几乎相等的代码,这意味着完全不同的结果。

    最新发现

    第一次运行JSMin时,它比未压缩的要快。我尝试了几次,始终得到相同的结果。这证实了先前的发现。我现在非常有信心,我们找到了解决方案。

    关于javascript - 为什么缩小或混淆的JavaScript比未压缩的代码性能更差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15458859/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com