DÜZENLEME
Benim asıl cevap en son kısmı hariç yanlıştı ve bunun için özür dilemek zorunda. Vector'in “başlık altında” dört uygulamaya sahip olduğu gerçeğini biliyordum. (Robert Penner tarafından bir yazı içinde FP 10 playerglobal.swc'den decompiled kaynakları bulabilirsiniz here) Bunlardan üçü sayı türleri (int, uint ve Number) içindir. Biri nesne türleri içindir. Bu sonuncusu bir yakalama işlevi görür ve Nesneden türetilen tüm sınıfları alır. Bu yüzden Vector.<Object>
'un the information regarding vectors and arrays available from Adobe'a dayanarak Array'dan daha hızlı olduğunu varsaydım.
Ancak, bu bilgilerin yanlış, ya da en azından bazı önemli bölümlerini dışarıda bırakır gibi görünüyor:
Vector.<AnyClassDerivedFromObject>
sıkı yazım için olanak sağlarken, bu tip bilgileri sadece (sen de derleme zamanında değerlendirilir
Daha fazla tip güvenlik elde edin, ancak çalışma zamanında değil - bu nedenle, sıkı yazım nesnesi vektörlerinin faydaları performansa uygulanmaz. Daha fazla bilgi için bkz. this blog post. Sonuç olarak, Vektör'ün Array'dan daha hızlı olan tek uygulaması sayı türleri için olanlardır (!).
Aslında, bu konuda bazı kapsamlı testler yaptık ve Vector.<int>
ints Array daha fazla% 60 daha hızlı iken, Vector.<Object>
tüm türevleri hızında sadece eşit olmadığı sonucuna vardık (yaniVector.<Object>
, Vector.<String>
ile aynı işlemi gerçekleştirir, ayrıca Array'dan yaklaşık% 20 daha yavaş vardır. Bunu iki kez kontrol ettim ve sonuçların oldukça doğru olduğuna inanıyorum.
Sayı tipi vektörlerin daha hızlı olduğu doğrudur, dolayısıyla bunları Array üzerinde performans avantajları için kullanmalısınız. Ama:
gibi sort()
, sortOn()
kullanacağız veya bunların yerli fonksiyonları çünkü Array elverişli sıralama işlevlerinin herhangi bir başka, yine, aksi karar verebilir ve Sadece eğer SON DÜZENLEME
Bu gerçekten hızlı. Bir Vector üzerinde kendi sıralama yöntemlerinizi uygulamak muhtemelen hızlarına uymayacaktır.
Güncelleştirilmiş yanıtıma bakın @ crooksy88. Orijinal kodumun doğruluğunu gösteren test kodu + sonuçları gönderdim ve weltraumpirat'ın cevabı patentlidir. –