Javada, Vector ve ArrayList arasındaki farkın ne olduğunu sorulduğunda, genel olarak şunları söyleriz
Vector’un thread-safe‘dir.
Vector kapasitesi 2 kat artacak şekildedir (eğer capacityIncrement değeri verilmediyse).
ArrayList her seferinde kapasitesinin yarısı kadar ( %50) kapasitesini artırır.
Herikisi de öntanımlı olarak 10 element saklayabilecek şekilde ilklenir.
Burada¬† en çok Vector’un thread-safe özelliği öne çıkar. Yani Vector; ArrayList e göre, içindeki verinin doğruluğunu garanti eder. Hız olarak nasıl bir etkisi olduğuna ise inceleyelim.
Peki vector ve ArrayList performans olarak nasıl bir farkı vardır.
Performans karşılaştırılmasında 100.000 tane rastgele oluşturulmuş sayılar eklenip, işlem yapılmaktadır.
Ekleme İşlemi
Vector ve ArrayList e rastgele oluşturulmuş 100.000 element ekleniyor.
PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
IList<Integer> vectorList = new IntegerVectorListImpl();
IList<Integer> arrayList = new IntegerArrayListImpl();
List<Integer> randomIntegers = getRandomIntegers(100000);
long start,end;
write("Start for inserting ARRAYLIST");
start = System.currentTimeMillis();
for(Integer i : randomIntegers) arrayList.insert(i);
end = System.currentTimeMillis();
long differenceOfArrayList = end -  start;
write("ArrayList time difference :" + differenceOfArrayList + " ms"); write("End for inserting ARRAYLIST");
write("Start for inserting VECTOR");
start = System.currentTimeMillis();
for(Integer i : randomIntegers) vectorList.insert(i);
end = System.currentTimeMillis();
long differenceOfVector = end -  start;
write("Vector time difference :" + differenceOfVector + " ms");
write("End for inserting VECTOR");
Bu test işlemi sonucunda alınan değerler şu şekilde.
En İyi Değeri En Kötü Değeri Ortalama
Vector 29 58 36.45
ArrayList 17 30 24.9
Görüldüğü gibi ArrayList ekleme işlemlerinde daha hızlı çalışıyor.
Arama İşlemi
Bir üstteki örnekte olduğu gibi, 100.000 kayıt eklenerek, bu kayıtlar içinden bir değer aranıyor.
Kod: Kodu kopyalamak için üzerine çift tıklayın!
IList<Integer>;
vectorList = new IntegerVectorListImpl();
IList<Integer> arrayList = new IntegerArrayListImpl();
List<Integer> randomIntegers = getRandomIntegers(100000);
long start,end;
for(Integer i : randomIntegers)
arrayList.insert(i);
for(Integer i : randomIntegers) vectorList.insert(i);
Integer findObj =  777;
write("Start for search ARRAYLIST");
start = System.currentTimeMillis();
arrayList.search(findObj);
end = System.currentTimeMillis();
long differenceOfArrayList = end -  start;
write("ArrayList time difference :" + differenceOfArrayList + " ms"); write("End for search ARRAYLIST");
write("Start for search VECTOR");
start = System.currentTimeMillis();
vectorList.search(findObj);
end = System.currentTimeMillis();
long differenceOfVector = end -  start;
write("Vector time difference :" + differenceOfVector + " ms");
write("End for search VECTOR");
Bununla ilgili sonuc şu şekilde:
En İyi Değeri En Kötü Değeri Ortalama
Vector 6 9 7.6
ArrayList 6 13 7.4
Görüldüğü gibi ArrayList vector den cok az daha hızlı arama işlemi yapabiliyor sunuz.
Sonuç Olarak
Sonuç olarak ise Vector thread-safe özelliğinden dolayı daha güvenli olduğu halde biraz yavaş çalışmaktadır. ArrayList ise daha hızlı olup, multi-thread uygulamalarda verinin doğruluğunu garanti edememektedir.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]