Java, Python ve Ruby Dillerinin Performans Karşılaştırması

advertisement
Java, Python ve Ruby Dillerinin
Performans Karşılaştırması
Çanakkale Onsekiz Mart Üniversitesi
Mustafa ŞAHİN
Akademik Bilişim 2007
1
Dillerin seçim nedeni
Java, Pyton ve Ruby
►
►
►
►
Programlama dillerinin popülerliği her
geçen gün artmaktadır.
Nesneye yönelik program geliştirilebilir.
Her üç dil de yorumlanarak çalıştırılır.
Üç programlama dili de açık kaynaklıdır.
Akademik Bilişim 2007
2
Performans Testleri
Bu diller üzerinde daha öncede birçok performans
testleri gerçekleştirilmiştir.
Bu çalışmalarda programlama dillerinin eski sürümleri
kullanılmıştır.
Akademik Bilişim 2007
3
Gerçekleştirilen Testler
Yapılan testlerde kullanılan uygulamalar aynı
ihtiyaçlara cevap veren uygulamalardır.
Testler her uygulama için 5 kez tekrarlanmıştır ve
sonuç olarak ortalama değerler kullanılmıştır.
Yapılan testler ile üç programlama dilinin
► Çalışma süreleri
► Bellek tüketimleri
► Yazılan kodun uzunluğu
incelenmiştir.
Akademik Bilişim 2007
4
Test uygulamalarının açıklamaları
1
[0..3,000,000] aralığındaki sayıların ortalamasının hesaplanması.
2
[2..50,000,000] aralığındaki asal sayıların hesaplanması.
3
[1..100,000,000] aralığında çalışan boş döngü.
4
500x500 boyutlarında iki matrisin çarpımı.
5
10,000 elemanlı, eleman değerleri en kötü durumda olan dizinin Kabarcık Sıralama
(Bubble Sort) algoritması ile sıralanması.
6
Hanoi kuleleri probleminin 25 disk için öz yinelemeli çözümü.
7
100,000 elemanlı, eleman değerleri en kötü durumda olan dizinin Hızlı Sıralama
(Quick Sort) algoritması ile sıralanması.
8
500,000 adet farklı dizginin listeye eklenmesi; eklenen ilk ve son elemanın liste
içinde aranması.
9
500,000 adet farklı dizgi anahtarlarına sahip sayıların Eşleme (Map) veri yapısına
eklenmesi; ilk ve son elemanın eşleme içinde aranması.
10 1,000,000 elemanlı, eleman değerleri en kötü durumda olan dizinin; dilin yerleşik
sıralama algoritmaları kullanılarak sıralanması.
11 [0..1,000,000] aralığındaki sayıların dosyaya yazılması.
Akademik Bilişim 2007
5
Kullanılan Test Ortamı
►
►
►
►
►
►
HP Compaq NX9005 serisi Notebook
30 GB Harddisk
1 GB RAM
Mobile AMD Athlon XP2400+ işlemci
Windows 2003, Debian 3.1 Linux İşletim
Sistemi
Java 6.0, Python 2.5, Ruby 1.8.5
Akademik Bilişim 2007
6
Çalışma Süreleri (sn)
Test No
1
2
3
4
5
6
7
8
9
10
11
Python
1,165
61,183
6,636
71,014
13,370
39,193
1,318
0,964
1,252
0,498
2,720
Ruby
4,228
105,512
16,854
248,661
83,744
86,773
4,979
4,402
6,427
1,197
3,964
Akademik Bilişim 2007
Java
0,056
8,354
0,182
8,288
0,278
0,369
0,054
2,191
3,221
2,189
0,846
7
Çalışma Süreleri (%)
100%
80%
60%
Java
40%
Ruby
20%
Python
0%
1
2
3
4
5
6
7
8
9 10 11
Testler
Akademik Bilişim 2007
8
Test Uygulamalarının Bellek Tüketim Yüzdeleri
Test No
1
2
3
4
5
6
7
8
9
10
11
Python
0,2
20,4
0,2
1,3
1,3
0,2
0,4
2,3
3,5
8,3
0,2
Ruby
0,2
20,3
0,2
0,5
0,2
0,2
0,2
3,4
4,4
1,0
0,2
Akademik Bilişim 2007
Java
0,2
6,5
0,3
2,1
0,3
0,3
0,2
5,6
7,1
4,5
0,3
9
Test Uygulamalarının Bellek Tüketim Yüzdeleri
100%
90%
80%
70%
60%
50%
Java
40%
30%
20%
10%
0%
Ruby
Python
1
2
3
4
5
6
7
8
9
10 11
Testler
Akademik Bilişim 2007
10
Uygulamaların Satır Sayıları
60
Satır Sayıları
50
40
Python
30
Ruby
Java
20
10
1
2
3
4
5
6
7
8
9
10
11
Testler
Akademik Bilişim 2007
11
Uygulamalarda Kullanılan Karakter Sayıları
1800
Karakter Sayıları
1600
1400
1200
Python
1000
Ruby
800
Java
600
400
200
1
2
3
4
5
6
7
8
9
10
11
Testler
Akademik Bilişim 2007
12
Sonuçlar
►
►
Ruby ve Python ile yazılan uygulamaların
geliştirilme süreleri ve kod uzunlukları,
Java ile yazılan uygulamaların geliştirme
süresi ve kod uzunluğunun yarısıdır.
Ruby programlama dili ile yazılan
uygulamalar diğer programlama dillerine
göre en kısa kod uzunluğuna sahiptir.
Akademik Bilişim 2007
13
Sonuçlar
►
Ruby en az bellek tüketen programlama
dilidir.
►
Python en çok bellek tüketen programlama
dilidir.
Akademik Bilişim 2007
14
Sonuçlar
►
Java, Python programlama diline göre 7.5
kat daha hızlı, Ruby programlama diline
göre 21 kat daha hızlı çalışmaktadır.
Akademik Bilişim 2007
15
Sonuçlar
►
Java programlama dili dizgi(string)
işlemlerinde Python programlama diline
göre yavaş çalışmaktadır.
►
Python, Ruby programlama dilleri dizi
işlemlerinde liste veri yapılarını kullandıkları
için oldukça yavaştırlar.
Akademik Bilişim 2007
16
Teşekkürler
Oğuz YARIMTEPE ve Pınar YANARDAĞ ’a
Python ve Ruby dillerinde test
uygulamalarını geliştirmemde
yardımlarından dolayı teşekkür ediyorum.
Davut AKÇİÇEK ve Hande ŞEN ’e
yardımlarından dolayı teşekkür ediyorum.
Akademik Bilişim 2007
17
Java, Python ve Ruby Dillerinin
Performans Karşılaştırması
Çanakkale Onsekiz Mart Üniversitesi
Mustafa ŞAHİN
Akademik Bilişim 2007
18
Download