jjzjj

javascript - 评论会影响性能吗?

coder 2024-05-06 原文

我说 JavaScript 代码未编译,甚至 JIT 也未编译,对吗?如果是这样,是否意味着评论会影响性能,我应该非常小心地放置评论?例如尽可能将函数注释放在函数定义的上方和外部,并且绝对避免将注释放在循环内,如果我想最大化性能?我知道在大多数情况下(至少在非循环情况下),性能的变化可以忽略不计,但我认为这是值得了解和注意的事情,尤其是对于前端/js 开发人员。另外,在我最近参加的 js 评估中提出了一个相关问题。

最佳答案

Am I correct to say that JavaScript code isn't compiled, not even JIT?

没有。尽管 JavaScript 传统上是一种“解释型”语言(尽管不一定是),但大多数 JavaScript 引擎会在必要时即时编译它。 V8(Chrome 和 NodeJS 中的引擎)用于立即快速编译,然后返回并积极优化任何经常使用的代码(旧的 FullCodegen+TurboFan 堆栈);前一段时间做了很多真实世界的测量,they switched最初解析为 byteocde 和解释,然后编译如果代码被重用很多(新的 Ignition+TurboFan 堆栈),通过不编译运行一次设置代码获得显着的内存节省。即使是不太积极的引擎也几乎肯定至少会将文本解析为某种形式的字节码,并尽早丢弃注释。

请记住,“解释”与“编译”通常更多的是环境问题而不是语言问题;有 C 解释器,也有 JavaScript 编译器。语言往往与环境密切相关(例如 JavaScript 往往与 Web 浏览器环境相关联,尽管它的使用一直比这更广泛,甚至早在 1995 年),但即便如此(正如我们所见),可能会有变化。

If so, does that mean that comments have an affect on performance...

一个非常、非常、非常最小的,在初始解析阶段。但是评论很容易扫过去,不用担心。

不过,如果您真的担心它,您可以使用 jsmin 等工具缩小脚本。或 Closure Compiler (即使只是简单的优化)。前者只会去除注释和不必要的空白,诸如此类(仍然非常有效);后者执行 实际上理解代码并执行一些内联​​等。因此,您可以自由发表评论,然后使用这些工具来确保在首次加载脚本时这些评论可能产生的任何微小影响都可以通过使用缩小工具来绕过。

当然,关于 JavaScript 性能的问题是很难可靠地跨引擎预测,因为引擎差异很大。所以实验可以很有趣:

  • Here's每次(理论上)重新分析/重新创建函数的实验
  • Here's one只解析/创建一次函数并重用它

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

关于javascript - 评论会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10232989/

有关javascript - 评论会影响性能吗?的更多相关文章

  1. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  2. ruby-on-rails - 添加回形针新样式不影响旧上传的图像 - 2

    我有带有Logo图像的公司模型has_attached_file:logo我用他们的Logo创建了许多公司。现在,我需要添加新样式has_attached_file:logo,:styles=>{:small=>"30x15>",:medium=>"155x85>"}我是否应该重新上传所有旧数据以重新生成新样式?我不这么认为……或者有什么rake任务可以重新生成样式吗? 最佳答案 参见Thumbnail-Generation.如果rake任务不适合你,你应该能够在控制台中使用一个片段来调用重新处理!关于相关公司

  3. .net - .NET 将如何影响 Python 和 Ruby 应用程序? - 2

    我很好奇.NET将如何影响Python和Ruby应用程序。用IronPython/IronRuby编写的应用程序是否会非常特定于.NET环境,以至于它们实际上将变得特定于平台?如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET同类产品的优势是什么? 最佳答案 我不能说任何关于IronRuby的东西,但是大多数Python实现(如IronPython、Jython和PyPy)都试图尽可能忠实于CPython实现。不过,IronPython正在迅速成为这方面的佼佼者之一,并且在PlanetPyth

  4. ruby-on-rails - 使用 javascript 更改数据方法不会更改 ajax 调用用户的什么方法? - 2

    我遇到了一个非常奇怪的问题,我很难解决。在我看来,我有一个与data-remote="true"和data-method="delete"的链接。当我单击该链接时,我可以看到对我的Rails服务器的DELETE请求。返回的JS代码会更改此链接的属性,其中包括href和data-method。再次单击此链接后,我的服务器收到了对新href的请求,但使用的是旧的data-method,即使我已将其从DELETE到POST(它仍然发送一个DELETE请求)。但是,如果我刷新页面,HTML与"new"HTML相同(随返回的JS发生变化),但它实际上发送了正确的请求类型。这就是这个问题令我困惑的

  5. ruby - .gemrc 评论? - 2

    这是一个基本问题.gemrc文件中是否允许注释?如果是,你会怎么做?我这里查了没用docs.rubygems.org/read/chapter/11 最佳答案 文档说:Theconfigfileitselfisin’’’YAML’’’format.这意味着您可以拥有commentsstartingwith#,例如:#Ilikedocsrdoc:--inline-source--line-numbers 关于ruby-.gemrc评论?,我们在StackOverflow上找到一个类似的问题

  6. Ruby 的数字方法性能 - 2

    我正在使用Ruby解决一些ProjectEuler问题,特别是这里我要讨论的问题25(Fibonacci数列中包含1000位数字的第一项的索引是多少?)。起初,我使用的是Ruby2.2.3,我将问题编码为:number=3a=1b=2whileb.to_s.length但后来我发现2.4.2版本有一个名为digits的方法,这正是我需要的。我转换为代码:whileb.digits.length当我比较这两种方法时,digits慢得多。时间./025/problem025.rb0.13s用户0.02s系统80%cpu0.190总计./025/problem025.rb2.19s用户0.0

  7. ruby - Ruby 性能中的计时器 - 2

    我正在寻找一个用ruby​​演示计时器的在线示例,并发现了下面的代码。它按预期工作,但这个简单的程序使用30Mo内存(如Windows任务管理器中所示)和太多CPU有意义吗?非常感谢deftime_blockstart_time=Time.nowThread.new{yield}Time.now-start_timeenddefrepeat_every(seconds)whiletruedotime_spent=time_block{yield}#Tohandle-vesleepinteravalsleep(seconds-time_spent)iftime_spent

  8. ruby-on-rails - 如果条件与 &&,是否有任何性能提升 - 2

    如果用户是所有者,我有一个条件来检查说删除和文章。delete_articleifuser.owner?另一种方式是user.owner?&&delete_article选择它有什么好处还是它只是一种写作风格 最佳答案 性能不太可能成为该声明的问题。第一个要好得多-它更容易阅读。您future的自己和其他将开始编写代码的人会为此感谢您。 关于ruby-on-rails-如果条件与&&,是否有任何性能提升,我们在StackOverflow上找到一个类似的问题:

  9. ruby - 在 Mechanize 中使用 JavaScript 单击链接 - 2

    我有这个:AccountSummary我想单击该链接,但在使用link_to时出现错误。我试过:bot.click(page.link_with(:href=>/menu_home/))bot.click(page.link_with(:class=>'top_level_active'))bot.click(page.link_with(:href=>/AccountSummary/))我得到的错误是:NoMethodError:nil:NilClass的未定义方法“[]” 最佳答案 那是一个javascript链接。Mechan

  10. ruby - 如何找到我的 Ruby 应用程序中的性能瓶颈? - 2

    我编写了一个Ruby应用程序,它可以解析来自不同格式html、xml和csv文件的源中的大量数据。我如何找出代码的哪些区域花费的时间最长?有没有关于如何提高Ruby应用程序性能的好资源?或者您是否有任何始终遵循的性能编码标准?例如,你总是用加入你的字符串吗?output=String.newoutput或者你会使用output="#{part_one}#{part_two}\n" 最佳答案 好吧,有一些众所周知的做法,例如字符串连接比“#{value}”慢得多,但是为了找出您的脚本在哪里消耗了大部分时间或比所需时间更多,您需要进行分

随机推荐