Vector vs Array
Yağız Gürgül Tarih: 2/10/2008 Yorum: 1 adet
Okunma : 736 Tutanlar: Bu yazıyı 4 kişi tuttu.
Flash ile birçok çalışmamızda Array sınıfını kullanıyoruz. Bazen ürünlerimizi listeliyoruz, bazen görsel objelerimizi depoluyoruz.
AS3 ile gelen displayList bile bir nevi Array. Peki CS4 ile gelen Vector sınıfına ne demeli? Daha yazımını görünce bile şaşırtıyor.
Örnek:
var vector:Vector.<int> = new Vector.<int>;
Alıştığımız bir yazı biçimi değil. Ama bu satırdan anlıyoruzki bu dizinin elemanlarının türü sadece int olabilir.
Vector ve Array Farkı: Vector ara elemanları tanımlanmamışsa null değeri alıyor.
Örnek:
var a:Array = new Array();
a[0] = "eleman";
a[6] = "eleman";
trace(a)
Bu kodu test ederseniz ara elemanlar direk boş gözükecektir.Aynı örneği Vector sınıfında denerseniz eğer:
var v:Vector.<String> = new Vector.<String>();
v[0] = "eleman";
v[6] = "eleman";
trace(v)
Ara elemanların null değeri aldığını görebilirsiniz.Dahası da var. Vector sınıfında aynı Array sınıfındaki gibi uzunluk değerini başta girebiliyorsunuz.
Örneğin:
var v:Vector.<String> = new Vector.<String>(4);
v.push("a");
v.push("b");
trace(v)
Bu kodu çalıştırdığınızda ilk 4 eleman null olacaktır ve push ile atadığımız veriler sona eklenecektir. Ama şunu denerseniz:
var v:Vector.<String> = new Vector.<String>(4);
v[0]="h";
v.push("a");
v.push("b");
trace(v)
İlk eleman h olarak gözükecektir.
Vector sınıfını Array’dan ayıran bir başka özellik ise uzunluğu koruma özelliğidir. Örneğin:
var v:Vector.<String> = new Vector.<String>(4,true);
v[0]="a";
trace(v)
Bu kodu denediğinizde ilk eleman a olarak gözükecek. Şimdi şu kodu test edin:
var v:Vector.<String> = new Vector.<String>(4,true);
v.push("a");
trace(v)
Normalde bu kod uzunluğu değiştiriyor. Ama biz izin vermediğimiz için hata vericektir:
RangeError: Error #1126: Sabit bir vektörün uzunluğu değiştirilemez.
at Vector$object/http://adobe.com/AS3/2006/builtin::push()
at Untitled_fla::MainTimeline/frame1()
Vector sınıfını da tanıyınca şimdi gelelim asıl Array ile asıl karşılaştırmasına.
Performans Farkı Yazılım biçiminden kurallarına kadar farklılık gösterdiğine göre performans farkı da olmalı ki var zaten.
Örneğin şu kodu çalıştıralım:
var vector:Vector.<int> = new Vector.<int>;
var array:Array = new Array();
var sTime:Number = 0;
function arrayTest() {
for( var i:int=0; i<5000000; i++) {
array.push(i);
}
}
function vectorTest() {
for( var i:int=0; i<5000000; i++) {
vector.push(i);
}
}
sTime = getTimer();
arrayTest();
trace("Array Test: "+ String( getTimer() - sTime));
sTime=getTimer();
vectorTest();
trace("Vector Test: "+ String( getTimer() - sTime));
Bu kodu çalıştırdığınızda göreceksinizki dizilerin işleme süresi vectorleri işleme süresinden fazla. Eğer tek tip bir dizi oluşturacaksanız Vector kullanmanızda fayda var.
Kolay gelsin…
Haber
Etkinlikler
Toplantı
Kahraman ve need4code.com Projesi Connect Toplantısı
Kahraman ve need4code.com Projesi Connect Toplantısı
Selam arkadaslar,
Programlama ile uğraşanların hayatlarını kolaylaştıracak desktop ve web tabanlı ortak iki proje ile ilgili 3. toplantımızı 3Aralık...
Kategori:
Toplantı
Kimler Burada? 
Son 1 dakika içinde MMIstanbul' da 487 (1 kayıtlı, 486 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:
MMIstanbul Blog'undan
Neler Yapılabilir?
Yeni bir portal, 30 civarında online / offline etkinlik, seminer vb rağmen MMIstanbul sanıyoruz ki halen hakettiği ilgiyi göremedi. " ...
500 Hatası Hakkında!
Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)
Ne Nedir Kampanyası Başlıyor!
Çok Merak Edenler için; MMIstanbul Geliştirme Ekibi ve Çalışma Ortamımız









Vector sınıfı C++ ‘da zaten vardı, AS3 için ise gerçek bir ihtiyaçtı. Güzel bir yazı olmuş.
Elinize sağlık.