Re: [Linux-programlama] mono

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Bora Güngören (bora@boragungoren.com)
Date: Sat 14 May 2005 - 12:00:00 EEST


Merhaba,

Şaşırılacak bir şey yok. :-)

Açıkçası bu yazdığınız kod performans metriği olarak kullanmaya yatkın
değil. Size önerim aşağıdaki türde testler yapmanız ve çok sayıda testin
ortalamasını almanız:

- Aynı anda çok sayıda struct / nesne oluşturulması ve bellekten silinmesi
- Ardışık olarak çok sayıda struct / nesne ye atama yapılması
- Özyinelemeli (recursive) yapıların (örneğin ağaç yapısı) bellekte
kopyalanması
- C' de void* ve bolca açık tip dönüşümü ile yaptığınız bir grup işlemin
C#'da çok biçimlilik ile yapılması
- Çok klasik bazı algoritmaların (TSP, vs NP-hard yada NP-complete
problemler) kodlanması

Bunları deneyecek olursanız daha sağlıklı sonuçlar göreceksiniz. Elde
edeceğiniz sonucu şimdiden söyleyebilirim; salt programın hızı ile
baktığınızda C, C++, C# ve Java arasında hız farkı gözden kaçabilir
seviyede (%3-5'lerde) olacaktır. :-)) Bunun nedeni derleyicilerin ve
sanal makinaların otomatik olarak yaptıkları çok çeşitli en iyilemeler.

Bu arada bu testlerin çalışacağı bilgisayarda aynı anda hiç bir servisin
çalışmaması gerektiğini; arka plandaki süreçlerin çoğunun da kapatılması
gerektiğini gözardı etmeyin. Siz şu andaki bir çalıştırmanız sırasında
gelen epostalar nedeni ile sisteminizdeki yavaşlamanın yükünü
programlama diline atıyorsunuz. Kullandığınız time komutu saniye olarak
süre (uygulamaya ayrılan) vermekte ama sisteme binen yük çok daha farklı
şekiller de de etkisini gösterebilir.

Lisans düzeyi ders kitaplarında anlatılan derleyici, vs modelleri artık
sadece öğretim amaçlı kullanılacak modeller. Akıl sır ermeyecek
numaralar dönüyor arka planda. :-) Mesela geçenlerde Springer
Verlag'dan çıkan bir Java kitabındaki mantıksal ifadeler ve özel amaçlı
calculus notasyonlarına bakan bir senarist anında bir kaç tane Dark City
benzeri film için fikir bulur icabında. :-)

İkinci bir not; "gerçek" uygulamaların performansları çok daha farklı
biçimde ölçülmeli çünkü salt matematiksel tekniklere yüklenmekten çok ağ
kaynaklarına erişim, veri tabanı sürücüsünün yapısı, tampon kullanımı,
kullanılan XML yapıları gibi programlama dilinin tasarımı ile alakasız
bir çok şey söz konusu oluyor. Programlama dili, API'ler, üçüncü
kişilerin verdiği kaynaklar, diğer yan uygulamalar derken bir yazılım
sistemi zaten yeterince karmaşık. Tek tek bileşenlerin performanslı
olması da uyumluluk/uyumsuzluk nedeni ile nihai sistemin performansı
için bir garanti değil. :-)

Sevgiler.

Bora.

Engin KUZU wrote:

> Bugün mono ile c arasında küçük bir test yaptım. Amacım mono ile
>yazdığım uygulamanın c ile yazdığımdan ne kadar yavaş olduğunu
>görebilmekti fakat beklenen olmadı. Mono daha hızlı çıktı. Aslında tam
>olarak karşılaştırabilmem için birçok ayrıntıyı içeren testler yapmak
>gerekli. Yaptığım işlemleri aşağıda bulabilirsiniz. Ben mi yanlış
>birşeyler yaptım yoksa problem yok mu gerçekten?
>
>engin@debian:~$ cd Desktop/deneme/
>engin@debian:~/Desktop/deneme$ ls -al
>toplam 16
>drwxr-xr-x 2 engin engin 4096 2005-05-14 10:48 .
>drwxr-xr-x 8 engin engin 4096 2005-05-14 10:44 ..
>-rw-r--r-- 1 engin engin 163 2005-05-14 10:43 deneme-c.c
>-rw-r--r-- 1 engin engin 257 2005-05-14 10:43 deneme-mono.cs
>engin@debian:~/Desktop/deneme$ cat deneme-c.c
>#include <stdio.h>
>
>int main()
>{
> int a,b,c,d;
> for (a=0;a<500;a++)
> {
> for(b=0;b<5000;b++)
> {
> for(c=0;c<5000;c++)
> {
> d=a+b+c;
> }
> }
> }
> return 0;
>}
>engin@debian:~/Desktop/deneme$ cat deneme-mono.cs
>using System;
>
>namespace deneme
>{
> public class HelloWorld
> {
> public static void Main(string[] args)
> {
> int a,b,c,d;
> for (a=0;a<500;a++)
> {
> for(b=0;b<5000;b++)
> {
> for(c=0;c<5000;c++)
> {
> d=a+b+c;
> }
> }
> }
>
> }
> }
>}
>
>engin@debian:~/Desktop/deneme$ gcc deneme-c.c -o deneme-c
>engin@debian:~/Desktop/deneme$ mcs deneme-mono.cs
>Compilation succeeded
>engin@debian:~/Desktop/deneme$ ls -al
>toplam 32
>drwxr-xr-x 2 engin engin 4096 2005-05-14 10:49 .
>drwxr-xr-x 8 engin engin 4096 2005-05-14 10:44 ..
>-rwxr-xr-x 1 engin engin 11501 2005-05-14 10:49 deneme-c
>-rw-r--r-- 1 engin engin 163 2005-05-14 10:43 deneme-c.c
>-rw-r--r-- 1 engin engin 257 2005-05-14 10:43 deneme-mono.cs
>-rwxr-xr-x 1 engin engin 3072 2005-05-14 10:49 deneme-mono.exe
>engin@debian:~/Desktop/deneme$ time ./deneme-c
>
>real 0m29.112s
>user 0m29.108s
>sys 0m0.005s
>engin@debian:~/Desktop/deneme$ time mono deneme-mono.exe
>
>real 0m19.443s
>user 0m19.430s
>sys 0m0.011s
>engin@debian:~/Desktop/deneme$
>
>
>Debian Sid dağıtımını kullanıyorum.
>Kernel: Linux debian 2.6.11-1-686-smp
>Gnome 2.8.3 kullanıyorum.
>işlemci Pentium 4 2.6 GHz Hyperthreading 800Mhz fsb
>1024 Mbyte ram i865 chipset
>
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Linux-programlama mailing list
>Linux-programlama@liste.linux.org.tr
>http://liste.linux.org.tr/mailman/listinfo/linux-programlama
>

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.