Jump to page: 1 2
Thread overview
July 16, 2013

Yine başlığım çok saçma oldu :)

Aşağıdaki kodun çalışma süresi 240ms.

i=0; while(i<1000000){a=1 * 1 ;i++}

Burada a değişkenindeki RhInt nesnesini yeni veri yazıldığı için intarr adındaki bir int dizisine attım. Ve çarpma işlemi yapılırken yeni bir nesne oluşturmak yerine intarr daki nesneyi aldım ve 240ms den 74 ms e indi süre.

Herhangi bir işlem yapmadan döngünün çalışma süresi ise 26ms (bu biraz daha artacak zamanla :) )

i=0; while(i<1000000){i++}

Bunu bu şekilde yapmakta bir sıkıntı yok gibi ama benzer işlemi 2 + 2 + 2 gibi geçiçi oluşturulan bu veriler üzerinde de yapmak gerek ama sistemi yavaşlatmadan yapabileceğim bir çözüm bulamadım :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 16, 2013

Hocam haklısınız lakin dilde her şey bir nesne :)

Yani 2 + 3 denildiğinde 2 nesnesinin opAdd fonksiyonu çağırılıp 3 nesnesi gönderiliyor ve çıkan sonuç fonksiyon tarafından geri döndürülüyor ve şekilde işlenmeye devam ediyor :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 16, 2013

Hocam söylediğiniz şey ilham verdi ve şöyle bir şey yaptım.

Matematiksel işlemler için hafızada yer açtım ve bütün işlemlerimi o ilk başta oluşturduğum rhint üzerinden yaptım.
Yani 1 + 2 + 3 + 4 + 5 gibi uzayan bir ifadede hiç nesne oluşturulmuyor işlem bitiminde bir sayıya eşitleneceği zaman ise bir RhInt oluşturuyorum değerini de ilk başta oluşturduğum RhInt ten alıyor kısaca kopyalıyorum bu sayede oldukça hızlı bir yapı elde ediyoruz.

Tabi dilde bu işlemleri yavaşlatan birşeyler var anlayamadığım onları da çözdüğüm takdirde daha da hızlanacağını düşünüyorum (Hız hız diye kafayı yiyeceğim ve yiyorum :) )

i=0; while(i<1000000){a=1 + 1 + 1 + 1 + 1;i++}

134ms

i=0; while(i<1000000){a=1 + 1 + 1 + 1;i++}

115ms

i=0; while(i<1000000){a=1 + 1 + 1;i++}

101ms

i=0; while(i<1000000){a=1 + 1 ;i++}

91ms

i=0; while(i<1000000){a=1;i++}

70ms

i=0; while(i<1000000){a="talha";i++}

52ms

Ama stringin süresine bakarsanız yaptığım bu işlemler yaklaşık 20ms kadar sistemi etkiliyor yani hala eksik olan bir şeyler var

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 16, 2013

Yanilmiyorsam database islemleri yapilabiliyordu.

Peki ayni anda ornegin 1 milyon sorgu yapacak bi simulator yapilabilir mi?

Ya da soyle diyeyim veritabani islemlerinde islemi yapan veritabani sunucusu mu yoksa rh sunucusu mu olacak?

veritabani islemleri yine o dilin hiz sorunu olabilir mi?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 16, 2013

Alıntı (zekeriyadurmus):

>

çarpma işlemi yapılırken yeni bir nesne oluşturmak yerine intarr daki nesneyi aldım

1 * 1 ifadesinin geçici sonucunun yalnızca a'ya atanmak için hesaplandığını gördün ve o yüzden o ifadenin değerini tutmak için ayrı bir değişken kullanmadın. (Tabii değişken diyorum ama 1*1 hesabı aslında bir yazmaçta duruyordur.) Bu çok temel bir derleyici eniyileştirmesi gibi görünüyor.

Alıntı:

>

benzer işlemi 2 + 2 + 2 gibi geçiçi oluşturulan bu veriler üzerinde de yapmak gerek ama sistemi yavaşlatmadan yapabileceğim bir çözüm bulamadım

Eğer + işlemi bir ifade ise (öyle), o ifadenin değeri hesaplanmalı ve bir sonraki işlemde kullanılmalı. En hızlısı ifadeleri yazmaçlarda yaşatmak ve ancak kalıcı olacaklarsa belleğe yazmaktır.

Bunlar derleyici teknolojileri. Ben bilmem. Sana kolay gelsin. ;)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 17, 2013

Veritabanı bağlantı işlemlerinde dilin hıza bir etkisi olmaz ama veritabanından çekilen bilgilerin dilin kendi veri türlerine çevirilmesi aşamasında hız kaybı yaşanır. Diller için özelleştirilmiş veritabanı kütüphaneleri ile bu süre azaltılabilir.

Mesela ddilinde Variant lara çevirliyor mysql verileri. Ben uyguladığım takdirde Variantlardan peek yoluyla kendi nesnelerime çeviririm ama bu da hız kaybı olur onun yerine ilk aşamada variant oluşturmak yerine kendi nesnelerime çevirirsem bu hız kaybı yaşanmaz ve iyi bir yöntemle de hafızadan yer ayırtma işlemleri yapıldığı takdirde tadından yenmez :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 17, 2013

Alıntı (zekeriyadurmus):

>

Mesela ddilinde Variant lara çevirliyor mysql verileri. Ben uyguladığım takdirde Variantlardan peek yoluyla kendi nesnelerime çeviririm ama bu da hız kaybı olur onun yerine ilk aşamada variant oluşturmak yerine kendi nesnelerime çevirirsem bu hız kaybı yaşanmaz ve iyi bir yöntemle de hafızadan yer ayırtma işlemleri yapıldığı takdirde tadından yenmez :)

Zekeriya

eVET
En azından mysql kütüphanesinden başlanması gerekiyor dediğin doğru :) eğer yapabilirsek bu çok işimize yarar php nin mysql ile olan ilişkisi gibi bizim de rhs ile mysql arasında olan ilişkiyi artırmamız gerekir. Belki bu bize kullanıcı kazanma yolunda önemli bir gelişme sağlayabilir

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 17, 2013

Elbette güzel olur ama 1 tane Talha var :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 17, 2013

Bu örnekler bana çift derinlikli şu gereksiz D kodlamasını anımsattı:

void main() {
 for(int i = 1; i < 10; i++) {
   int n = i; int t = n;
   while(n--) t += 1;
   /* t = 2, 4, 6, 8 ... 18
    *
    * for(int t = 2; t < 20; t+=2) { }
    */
 }
}

Görüldüğü gibi çift döngü ile yapılan bu gereksiz ve karışık kod aslında 18'e kadar çift sayıları saymakta. Oysa bunu tek bir döngü ile 20'ye kadar sayarak da halledebiliyoruz...:)

Alıntı (zekeriyadurmus):

>

... çözdüğüm takdirde daha da hızlanacağını düşünüyorum (Hız hız diye kafayı yiyeceğim ve yiyorum :) )

> i=0; while(i<1000000){a=1 + 1 + 1 + 1 + 1;i++}
> ```
134ms
>
>
>

i=0; while(i<1000000){a=1 + 1 + 1 + 1;i++}

115ms

>

...

Bence, yaptığın şeyin hızını ölçmek için bu ve benzer olasılıkları düşünmene gerek yok. Yoksa hızı yavaşlatabilecek çok farlı olasılıklar da düşünülebilir. Öyleyse bu dili kullananın sorunudur. Yani neyin daha hızlı olduğunu görüp ona yönelebilir. Eğer tüm olasılıklara göre hızlı olabilecek bir dil yapmaya kalkarsan, toplamda bir yavaşlık olabileceği gibi işler bir yerden sonra Arap saçına dönebilir...:)

Hatırlarsan farklı durumlar için "mode" önerim vardı. Örneğin bunu matematiksel işlemlerin çok daha hızlı çalıştığı bir şekle (daha sonra) çevirebilirsin. Anahtar sözcüğü ise "mathops" olur mesela. Yorumlayıcı başlangıçta bunu gördüğünde kişilik değiştirip o hizmete yönelik davranmaya başlar. Bence bunlar (mod'lar) dil tam oturduğunda düşünülecek iyileştirmeler; hatta renk katacak şeyler. Yani asıl yapıyı bozmadan alternatif şeyler geliştireceksin. Böylece geriye doğru mükemmel bir uyumluluk meydana getirebilirsin.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 17, 2013

Alıntı (zekeriyadurmus):

>

Veritabanı bağlantı işlemlerinde dilin hıza bir etkisi olmaz ama veritabanından çekilen bilgilerin dilin kendi veri türlerine çevirilmesi aşamasında hız kaybı yaşanır. Diller için özelleştirilmiş veritabanı kütüphaneleri ile bu süre azaltılabilir.

Mesela ddilinde Variant lara çevirliyor mysql verileri. Ben uyguladığım takdirde Variantlardan peek yoluyla kendi nesnelerime çeviririm ama bu da hız kaybı olur onun yerine ilk aşamada variant oluşturmak yerine kendi nesnelerime çevirirsem bu hız kaybı yaşanmaz ve iyi bir yöntemle de hafızadan yer ayırtma işlemleri yapıldığı takdirde tadından yenmez :)

Zekeriya

İşte demek istediğim buydu. Sorgulama işlemleri her ne kadar veritabanında yapılıyor olsa da kullanıcıya bu veriler gösterilirken bi tür dönüşümü yaşıyor. Bunun da çözümü hafızadan ayrılan yerde tabii yöntem olarak da iyinin seçilmesi gerekmekte :)

MySQL için D kutuphanesi vardi sanirim oyle hatirliyorum :) github uzerinde gormustum. Bunlardan mi fayda ediyorsun testlerde yoksa MS-SQL vs. denemelerin olur mu?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2