29 Ekim 2010 Cuma

qt. vs. gtk


Merhabalar,

ÇOMAK projesinde hangi teknolojiyi kullanacağız sorusu bizi bu karşılaştırmaya itti: Qt vs. Gtk+

Bu konuda daha önce karşılaştırma yapanlar da var.[1], [2], [3]

Bizim Karşılaştırmamız:

[0] adresindeki dosyadaki;

2009gnometest dizininde -> Pardus 2009 yüklü, Python 2.6.5, Qt 4.6.3, Gtk 2.18.9
bulunan bilgisayardaki test sonuçları,
2011kdetest dizininde -> Pardus 2011 yüklü, Python 2.7, Qt 4.7.0, Gtk 2.22.0
bulunan bilgisayardaki test sonuçları,
ubuntutest dizininde -> Ubuntu 10.10 yüklü, Python 2.6.6, Qt 4.7.4, Gtk 2.21
bulunan bilgisayardaki test sonuçları bulunmaktadır.

Ayrıca bir bilgisayarda daha test yaptık. Bu bilgisayarın özellikleri;
İntel Core Duo T2370 @ 1.73 işlemci, 2GB RAM bulunmakta.

2009kdetest dizininde -> Pardus 2009 yüklü, Python 2.6.5, Qt 4.6.3, Gtk 2.18.9
bulunan bilgisayardaki test sonuçları bulunmaktadır.

Bu dosyalardaki;
fr_idle_qt.txt, fr_idle_gtk.txt dosyaları bilgisayarların boştaykenki free çıktıları,
ps_idle_qt.txt, ps_idle_gtk.txt dosyaları bilgisyarların boştaykenki ps aux çıktıları,

dosyalardaki idle yerine run olanlar betikler çalışıyorkenki çıktılar,
end olanlar ise betikler kapatıldıktan sonraki çıktılar.

Bunların yorumlanmış hali ise şu şekilde:

Pardus 2009 Gnome bilgisayarında:

QT için:

ps aux çıktısı:

17848 0.9 1.5 117004 48208 pts/0 S+ 22:16 0:00 python pyqt-hello.py

free çıktısında:

çalışırken 46MB civarı bellek kullanıyor. Kapattıktan sonra ise 21MB fazla gözüküyor.
Yani betik kapatıldığında sadece 25MB sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 23MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 23MB belleği tamamen boşaltıyor.
GTK için:

ps aux çıktısı:

1264 0.4 0.4 23856 13976 pts/0 S+ 22:09 0:00 python pygtk-hello.py

free çıktısında:

çalışırken 6.5MB civarı bellek kullanıyor. Kapattıktan sonra ise 2MB ye yakın fazla gözüküyor.
Yani betik kapatıldığında hemen hemen hepsini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 5MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 5MB belleği tamamen boşaltıyor.

Pardus 2011 Kde bilgisayarında:

QT için:

ps aux çıktısı:

1783 1.5 1.0 385784 41620 pts/0 S+ 22:20 0:00 python pyqt-hello.py

free çıktısında:

çalışırken 25MB civarı bellek kullanıyor. Kapattıktan sonra ise 10MB fazla gözüküyor.
Yani betik kapatıldığında sadece 15MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 15MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 15MB belleği tamamen boşaltıyor.
GTK için:

ps aux çıktısı:

1631 1.5 0.8 325084 35192 pts/0 S+ 22:25 0:00 python pygtk-hello.py

free çıktısında:

çalışırken 25MB civarı bellek kullanıyor. Kapattıktan sonra ise 1MB ye yakın fazla gözüküyor.
Yani betik kapatıldığında hemen hemen hepsini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 15MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 15MB belleğin 7MB ini boşaltıyor.

Ubuntu bilgisayarında:

QT için:

ps aux çıktısı:

2047 0.5 0.6 476628 41488 pts/0 Sl+ 22:31 0:00 python pyqt-hello.py

free çıktısında:

çalışırken 73MB civarı bellek kullanıyor. Kapattıktan sonra ise 60MB fazla gözüküyor.
Yani betik kapatıldığında sadece 13MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 15MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 15MB belleği tamamen boşaltıyor.

GTK için:

ps aux çıktısı:

2043 0.3 0.3 299932 22056 pts/0 Sl+ 22:27 0:00 python pygtk-hello.py

free çıktısında:

çalışırken 22MB civarı bellek kullanıyor. Kapattıktan sonra ise 4MB ye yakın fazla gözüküyor.
Yani betik kapatıldığında hemen hemen hepsini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 11MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 11MB belleğin 3MB ini boşaltıyor.

Pardus 2009 Kde bilgisayarında:

QT için:

ps aux çıktısı:

1412 1.3 1.2 113148 26560 pts/2 S+ 23:23 0:00 python pyqt-hello.py

free çıktısında:

çalışırken 22MB civarı bellek kullanıyor. Kapattıktan sonra ise 18MB fazla gözüküyor.
Yani betik kapatıldığında sadece 4MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 10MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 10MB belleğin 8MB ini boşaltıyor.

GTK için:

ps aux çıktısı:

1510 2.0 0.6 23560 14036 pts/2 S+ 23:29 0:00 python pygtk-hello.py

free çıktısında:

çalışırken 24MB civarı bellek kullanıyor. Kapattıktan sonra ise 19MB fazla gözüküyor.
Yani betik kapatıldığında
sadece 5MB'sini boşaltıyor.

Eğer aynı uygulama tekrar çağırılırsa,
çalışırken 9MB civarı daha bellek kullanıyor.
Kapattıktan sonra ise ikinci çağrıda kullandığı 9MB belleğin 3MB ini boşaltıyor.

Bu testin basit bir hello world uygulaması olduğunu göz önünde bulundurursanız bu
sonuçlar daha anlaşılır olacaktır.

Basit bir hello-world dışında, daha fazla görsel ögelerin kullanıldığı testler de yapacağız fakat şimdilik elimizde karşılaştırabileceğimiz bir şeyler oldu.

Bu sonuçların grafiksel karşılaştırmaları ise şu şekilde:




Devamı gelecek...



[0] http://www.mesutcankurt.com/comak/comak_testler.tar.bz2


1 yorum:

İsa Mert Gürbüz dedi ki...

Birde işin performansdan ziyade görsellik yanı var. Bildiğiniz gibi gtk uygulamaları kde'nin hiçbir temasını vs. tanımıyor sadce qtcurve'yi tanıyor ama gnome masaüstünde tabii ki de bütün temaları sorunsuzca kullanıyor
Qt'ye gelecek olursak kde üzerinde tam kullanım gtk üzerinde de tama yakın bir kullanım var.
Yani eğer her iki masaüstünde de aynı şey kullanılacak ise tabii ki qt ama en mantıklı yol her ikisi içinde farklı farklı kullanmaktır.
Benim görüşlerim de böyle, saygılar :)