2012-10-12 79 views
3

我在爲jQuery運行性能基準測試(不問),並發現了一些有趣的東西。出於某種原因,與this.foo = element相比,this[0] = element似乎很慢。這是強制jsPerf caseJavaScript - 字符串與整數鍵

有人可以解釋爲什麼會有這樣的性能問題嗎?除了顯而易見的「使用字符串鍵」之外,有什麼方法可以提高性能嗎?

+0

你能否給我們一個表現差異的感覺? (比慢100%慢100倍) – BostonJohn

+0

其他一些測試http://jsperf.com/test-string-and-index。我想性能打擊必須與陣列做些什麼。 – nhahtdh

+0

如果您使用不符合有效標識符的屬性,則速度無關緊要。在這些情況下,無論性能差異如何,您都需要使用'[]'。 –

回答

1

必須發現[0]不兼容,將其轉換爲字符串("0"),然後將其用作字符串查找["0"]

我不知道它解釋了正在發生的事情的100%,但無論如何,這是普遍的部分。
其餘的大多數都是以引擎爲基礎進行內部優化。

這也不是數組,也不是數組查找。
它只是一個對象上的括號符號。

+0

但是在數組上''[0]'比'['0']'快:http://jsperf.com/string-integer-property/5。 – pimvdb

+0

這是因爲它是一個數組。數組使用整數和對象使用字符串。 – Norguard