標題基本上。使用高整數數組索引有什麼不利嗎?
我們在說javascript,要說清楚。我需要知道是否存在任何性能負面因素,內存問題等,將高值整數用作數組索引而不是低價值整數。我知道,某些程序設計語言會從0分配足夠的內存來索引所有的元素與動感「神奇的」數組或諸如此類的東西一個最大值,所以我問:
var arrayA = [];
arrayA[12526] = "a";
var arrayB = [];
arrayB[1] = "b";
不arrayA和arrayB構成一脈相承到系統,還是使用arrayB類結構的影響小得多;
選讀:(爲什麼我就遇到了這個問題)
什麼,我想說明的是在一定意義上我猜動態CSS串。 假設我的代碼每隔幾秒產生一個dom元素(div)和一段CSS,它將所述div移動幾秒鐘。 5秒後,這個div將被刪除,永遠不會再被使用,所以CSS也需要繼續。
我想,創建一個div後,我也通過var uniqueID = setTimeout
創建一個超時,然後命名爲uniqueID
的css選擇器。這使我可以同時存在大量的div,每個div都有唯一的ID,因爲每個div都有一個計時器。然後我創建一個樣式字符串例如#uniqueID {top: 20px; left: 20px;}
明顯不同的div會有不同的屬性。每次創建這些CSS規則之一時,我都會更新<style>
元素的innerHTML以在其中添加此附加規則。過了一段時間,雖然我擁有的CSS字符串是巨大的....我們正在談論像2000個獨特的樣式ID選擇器,並沒有實際使用它們。所以我想澄清這一點。當我添加一個新的CSS時,做了一個「重寫」<style>
元素的innerHTML
的對象,並記住我之前提到過的定時器?那就是我將從數組中移除樣式字符串的地方。隨着時間的流逝,只有屏幕上的divs
將其CSS存儲在頁面的<style>
元素中。
這是代碼相當多:
var styleSystem = {
repository: [],
add: function (id, style) {
this.repository[id] = style;
this.updateStyle();
console.log("added");
},
remove: function (id) {
this.repository.splice(id, 1);
this.updateStyle();
console.log("removed");
},
updateStyle: function() {
var summedString = "";
this.repository.forEach(function (element) {
summedString += element;
});
document.getElementById("DynamicStyle").innerHTML = summedString;
}
};
請注意:
〜還有就是與代碼沒有問題,它的作品,我只是擔心我被壞人性能明智的,因爲我使用高整數索引數組ID來保存這些數據〜
關於性能的話題,最好每次只向DOM樹中添加和刪除新的<style>
元素,而不是動態地更改一個元素的內容單元素強制一個CSS重繪,可以說沒有太多的重新繪製,只有5-10個div divs同時存在?
編輯: 經進一步調查,我注意到,由於預期這不起作用,弦有時會拆除,其他時間不。在視覺上這個東西很有用,但它仍然保留了CSS中的某些字符串,這是不好的。我正在盡我所能避免delete array[key]
,因爲它會導致解除優化....解決方案任何人?
對於每個返回單個元素,儘管它並不一定意味着其他元素沒有分配內存空間,這是我擔心的。至於字典數組,它們與對象有何不同? o.0 – Dellirium
@Dellirium:我明白了這個問題,但是通過再次使用Chrome進行測試,元素編號爲1000000,與元素編號爲1相比,它沒有任何額外的內存。至於字典/數組與對象,您可以參考到http://stackoverflow.com/a/8067675/1640090。 – vbguyny
謝謝你,會進一步調查 – Dellirium