【发布时间】: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