【问题标题】:Performance overhead of javascript libraries [closed]javascript库的性能开销[关闭]
【发布时间】:2012-08-09 18:57:15
【问题描述】:

有谁知道是否有研究表明使用 javascript 库(除了明显的下载时间)与仅使用基本 javascript 相比的性能开销?这些天图书馆很大,我很好奇。

从我的计算机科学学位来看,它似乎应该有增长。 (换句话说,线性)。

在计算机科学术语中,这不会造成威胁,但它实际上如何影响页面加载时间和页面性能(以毫秒为单位)?我知道 CPU 是一个问题,RAM 等等。但是是否有任何测试可以衡量这些事情?

我知道另一个因素是库通常经过优化,可以以不太优化的方式手动编写代码,但库也有开销,并非所有功能都会被使用。

编辑: 我发现这似乎彻底回答了我的问题,即使它开始于其他事情: When to use Vanilla JavaScript vs. jQuery?

“正如 cmets 很快指出的那样(我 100% 同意),上面的陈述指的是基准测试代码。“原生”JavaScript 解决方案(假设它写得很好)将胜过完成相同任务的 jQuery 解决方案几乎在每一种情况下(我很乐意看到一个例子)。jQuery 确实加快了开发时间,这是一个显着的好处,我并不是要淡化它。它便于阅读,易于遵循代码,这是超过一些开发人员自己创造的能力。

那么,在我看来,答案取决于您要达到的目标。如果,正如我根据您对性能优势的引用所推测的那样,您追求的是应用程序的最佳速度,那么每次调用 $() 时使用 jQuery 都会引入开销。如果你追求可读性、一致性、跨浏览器兼容性等,那么肯定有理由偏爱 jQuery 而不是“原生”JavaScript。”

【问题讨论】:

  • 这是一个很笼统的问题,我认为无法回答。每个库的开销都不同,这取决于您使用它们做什么。
  • 也许是这样,但我希望有人知道任何测试不同类型用途的研究,这些研究试图展示更大的图景。我的直觉是,库总是有额外的开销,但会降低开发和维护成本。
  • 我认为您关于使用库如何影响性能的假设基本上是错误的,尤其是当您说诸如“库也有开销并且不会使用所有这些功能”之类的话时。如果库提供了一个函数并且您使用该函数,那么它不会比该函数在您自己的源代码中慢。如果该库还执行其他操作,则未使用功能的存在不会使您的代码运行更慢,尽管它可能会增加一些额外的 K 以从服务器加载。
  • @JamesMcLaughlin:不要忘记解释这些库的开销。当页面加载时,无论你是否调用每个函数,它都必须通读并解释每一行 JS。
  • 跨浏览器支持通常会在设计不佳的库中添加大量死代码。当我的浏览器无意使用它时,它必须为 IE8 解析可怕的 vml 回退。这种事情不是使用库的问题,只是库的问题。但我必须同意@JamesMcLaughlin,因为这个问题纯粹是主观的。如果您使用像 jQuery 这样的库,您可能会发现研究表明它比普通 JavaScript 慢 4 到 10 倍。这反映了它鼓励 dom 拖网以及其他耻辱的事实。

标签: javascript


【解决方案1】:

这是个好问题!除了库本身的下载时间之外,大多数框架都没有做太多,这意味着它们不会延迟页面显示或其他什么。

JQuery 的 $.css 方法可以很容易地为元素设置样式,如果您需要经常触发它并且直接在样式对象上操作要快得多,这可能会成为性能瓶颈。

我的意见是使用纯 javascript 做更多的事情,你必须获得更高的性能。对于 ajax 请求、菜单淡入淡出等普通的东西,我用过的所有框架的性能都足够了,而编码本身又会加快速度。

【讨论】:

【解决方案2】:

这完全取决于库。但是对于像 jQuery 这样的库,这可能无关紧要:性能瓶颈可能不是 jQuery,Google 提供了一个 CDN 托管的 jQuery,因此它甚至不会影响页面加载时间,以及 jQuery 为您提供的易用性。超过了轻微的性能影响。库还可以使用不常见或困难的技术来提高性能,因此使用库有时甚至比您自己编写的更快。真的没有最终答案。

【讨论】:

  • 我唯一不喜欢 google CDN 论点的是人们似乎认为它已经存在于每个站点上,并且它是以这种方式实现的,并且也适用于相同版本的非常同一个图书馆..这一切看起来都很愚蠢。我敢肯定它确实为某些人节省了时间,但你不知道它是否是第一次加载,而且它绝对不会完全否定页面加载时间。
【解决方案3】:

虽然不是对您问题的直接回答,但我对这个问题的回答:"What are some empirical technical reasons not to use jQuery?" 和其他答案和 cmets 可能对您的研究很有趣,因为其中很多都在谈论使用和不使用 JavaScript 库的性能问题和框架。希望对你有帮助。

【讨论】:

    【解决方案4】:

    这里是基于性能的 js 库和 venilla js 附加文本的研究

    http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly

    我可以说,使用 venilla javascript 总是比在库的帮助下执行某些操作要快。但是如果你想节省开发时间,最好使用一些你擅长的库。

    【讨论】:

    • 我可以知道投反对票的原因吗?
    • 关于原生 JavaScript 总是更快的说法。如果您手动编写所有代码,库通常会进行您永远不会考虑的优化,而且通常为“X”专门构建和经过实战测试的库会比您自己手动实现的“X”更快。 .
    • @JamesMcLaughlin 我并不是说我们总是应该写 venilla js,或者不使用 js 库对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多