Türkiye Online Medya Araştırması
Profili Göster

Vector vs Array

Yağız Gürgül Tarih: 2/10/2008 Yorum: 1 adet

Okunma : 5243 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....

aç-kapa İçeriğin rss beslemesi kullanımda değil Yorumlar

Profili Göster
Ahmet Erkan ÇELİK 5/10/2008

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.

yeni üyelik | şifremi unuttum

aç-kapa Toplantı Özgür Yazılım ve Linux Günleri '10

Özgür Yazılım ve Linux Günleri '10

İstanbul Bilgi Üniversitesi Bilgisayar Bilimleri Bölümü ve Linux Kullanıcıları Derneği'nin 9 yıldır düzenlemekte oldukları etkinlikler bu yıl `Özgür Y...
Kategori: Toplantı

aç-kapa Yarışma 3. Uluslararası Ekslibris Yarışması: İstanbul 2010

3. Uluslararası Ekslibris Yarışması: İstanbul 2010

İstanbul Ekslibris Dernegi, Feyziye Mektepleri Vakfı ve Işık Üniversitesi, kitaplar için mülkiyet işareti olarak kabul edilen ve üzerinde estetik dege...
Kategori: Yarışma

aç-kapa Konferans Yeni Medya ve Etkileşim Konferansı 2010 - Marmara Üniversitesi

Yeni Medya ve Etkileşim Konferansı 2010 - Marmara Üniversitesi

Generally speaking, the term "New" brought about debates. We try to open up and elucidate the term "New" along with "Interact...
Kategori: Konferans

aç-kapa Konferans 3. Uluslararası Gelecek İçin Öğrenme Alanında Yenilikler Konferansı 2010: e-Öğrenme

3. Uluslararası Gelecek İçin Öğrenme Alanında Yenilikler Konferansı 2010: e-Öğrenme

Konferans ile ilgili ayrıntılı bilgiye aşağıdaki bağlantıdan ulaşabilirsiniz: http://www.futurelearning.org.tr/katilim_cagrisitr.pdf ...
Kategori: Konferans

üyeler Son Kahramanlar...

stats Kimler Burada? web stats

Son 1 dakika içinde MMIstanbul' da 57 (50 kayıtlı, 7 ziyaretçi) kullanıcı varmış. Login durumda olanlar aşağıda:

...

Blog Bölümü Blogevi.com'a Taşınıyor

Selam arkadaşlar MMIstanbul'da , tasarımcı ve programcıların blog yazılarını "feedleyerek" MMIstanbul okurlarını MMIstanbul dışın ...

7.500'üncü üyemiz Cem Koç!

Neler Yapılabilir?

500 Hatası Hakkında!

Reklam, MMIstanbul ve Yeni Projeler (Durumumuz Bu Tarzında)

coldfusion mysql ubuntu
 
sponsor adobe istanbul