2013-06-22 84 views
0

我想优化我的JavaScript代码的速度。哪个更快:document.location.pathname或myOwnObj.pathname?

我有我需要经常访问的document对象的某些属性,如document.location.pathname或甚至更糟,document.documentElement.innerText

哪个会更快:

  1. document每次访问这些属性,或

  2. 将它们存储作为我自己的对象之一的属性,这样我就可以像访问它们myObj.pathnamemyObj.innerText

+3

没关系。真的,试试吧。创建一个微基准(例如http://jsperf.com)来满足好奇心,然后意识到它在实际情况下并不重要。 – user2246674

+0

我不知道如何。另外,我觉得这很重要,特别是在document.documentElement.innerText的情况下,因为直接访问DOM并剥离标签需要的时间比从对象访问字符串需要更长的时间。 – LonelyWebCrawler

+0

计算机*速度快*且主流JavaScript/DOM实现*高度优化*。再次,为了解决你自己的好奇心,创建你自己的基准 - 如果有关于为什么*基准产生“意想不到的结果”的问题,那么这是一个合适的SO问题;这不是没有问题。在任何现实的计划中,这并不重要。 – user2246674

回答

2

Test it.

虽然有跨浏览器的一些差异,缓存你的对象确实让查找更快。

“更快”是比较两次而不是一次访问对象的属性。我真的怀疑这是你的应用程序的瓶颈。无论如何,在试图优化这样的小事情之前,先对其进行剖析。

+0

你是对的,也许我正在寻找错误的地方进行优化。然而,使用'innerText',有一些[巨大的性能差异](http://jsperf.com/property-access-10/2)。 – LonelyWebCrawler

+0

对不起,我懒得改变变量名称。我正在测试'document.documentElement.innerText'缓存与未缓存。尝试现在查看它。 – LonelyWebCrawler

+0

@LonelyWebCrawler:好吧,一旦你缓存它,你将比较获取任意元素的innerText所花费的时间与在当前范围内查找变量所花费的时间。你的问题是关于'document.documentElement.innerText'和'cachedDocumentElement.innerText'。 – Blender