September 15, 2009

Esat, gayet güzel olmuş. Küçük küçük yorumlar yazdım. Onları da halledince tam olacak. ;)

Ali

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

September 15, 2009

Nefis, nefis! :)

Bence kararı canalpay'a bırakalım. O da aynı fonksiyonları yazdığı için karışıklık olmaması için o karar versin.

Bir kaç yorum:

Esat da bunu aynı şekilde anladığına göre ya ben sizi yanılttım, ya da DigitalMarsçıların belgeleri karışık: unittest bloğu her fonksiyon için ayrı olacak ve her unittest kendi fonksiyonunu denemiş olacak. Yani bu unittest'i ikiye ayırmak gerek.

Ayrıca testlere ASCII harflerden de karıştırmak iyi olur. Yanlışlıkla onları bozmuş olmayalım.

Önemsiz ve küçük bir ayrıntı: foreach, türü anlayacak kadar akıllıdır:

foreach(küçükHarf; giriş) {

Ali

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

September 15, 2009

Orada r10 satırına tıklayınca sayfanın altında.

Ali

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

September 16, 2009

Bu arada test için kullandığım kodlar **string için **:
http://www.ozgurlukicin.com/yapistir/218/

deneme için:

http://www.ozgurlukicin.com/yapistir/217/

Hızları :
birinci : 3578
ikinci : 3422
üçüncü : 3500

100.000 kere fonksiyon çağrılarak yapıldı. Daha fazlası için dayanamadım.

Birinci en yavaş ben onu switch ile yapmıştım diye hatırlıyorum. O yüzden daha hızlı olacağını düşünüyordum. Acaba ne için böyle oldu ? Yoksa kontrol sayısı çok olmadığı için mi ?

İkinci en hızlı burada birinciyi geçmesine şaşırdım açıkca. Ben ikincinin hızda da ikinci olmasını bekliyordum.

Üçüncü hızda ikinci oldu. evet basitlik olarak bu kod olabilir. Phobos kütüphanesinide daha az kullanırız. Ama Emre'nin yazdığı kod daha iyi gibi.

Ama ben açıkca bu D'nin hız testine güvenemedim. Çünkü bir bakın ortalaması bile 3500 oluyor :-) Ben bunda bir iş var diyorum ve sözü size bırakıyorum.

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

September 16, 2009

Bu arada bütün yazdığımız fonksiyonların hız testini yapalım mı ?

Yok ben iki saat bekleyemem diyorsanız deneme normal durur. Hıztesti diye ayrı bir tane açarız. Oraya hız kodlarını ekleriz. İlerde hız için düzenleme yaptığımızda bile daha çabuk bakarız.

Sizce nasıl olur.

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

September 16, 2009

Evet hız testi çok güvenilmez ama en hızlısı switchli olan sanırım. Tabii o an bilgisayar bir işlem yapsa bile çok farkediyor.

Bu arada ilk bir sonra iki sonra üçü deneyeceğimize yerleri değiştirince bile hızları farkediyor. Fonksiyonu biraz daha çok çağırdığımda harelde daha güvenilir sonuçlar çıkıyor.

Bir çok olasılığa baktım en hızlısı yine switch gibi. Mantıkende öyle olması gerekiyor. Sizde deneyin ama sizce de iki tane kontrol gerekiyor mu ? Bana gerekmiyor gibi geldi. Hatta Esat Bey bile tek kontrolle işi bitirmiş. Eğer else if i çıkartıp tek if ile else'i bırakırsak(yada ? : işleci) daha hızlı olacak gibi.

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

September 15, 2009

Ha ha! :D Sayfanın altında bir Submit düğmesi varmış... :blush:

Şimdi '6 line-by-line comments'e tıklayınca görünüyor.

Ali

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

September 16, 2009

Alıntı (acehreli):

>

switch'in if'lerden daha fazla hız kazandıracağını ölçmeden bilemeyiz.

Zaten denedim. Diğer mesajlarımı okumadınız sanırım :-D Bir mesaj okuyuo sonra cevap verip sonra öbürünü mü okuyorsunuz ? Bence ilk önce bütün mesajları okuyun sonra yine teker teker mesajları okursunuz ;-)

Dediğim gibi ilk hangi fonksiyon çağrıldığı bile çok farkediyor hız ölçümünde. Hatta bazen biri hızlı olup diğeri yavaş oluyor. Bazen ise tam zıttı.

Ama switch yapısı itabarı ile ifden ayrılıyor. Bunu siz benden daha iyi biliyorsunuz. Switch bir anahtar kelime alır. Case ile anahtar terimi ne olduğunu kontrol eder ona göre işlem yaparsınız. SAdece bunun için tasarlandığı için hem daha hızlı olur. Hem de kod daha okunaklı olur. İflerde ise bir anahtar dan fazla alır. Bu yüzden daha yavaş çalışır. Böyle olmasa bile ben böyle biliyorum.

Bu arada kodu tek kontrol ile yazıyorum. Bunun için switch yada if gerekmeyecek. Ama hata yapıyorum. Şuna bir bakarmısınız ?

(büyükHarf == 'I') ? küçükHarf = 'ı' : küçükHarf = toUniLower(büyükHarf);

Kafam bulanık galiba sorun nedir bulamadım.

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

September 16, 2009

Alıntı (acehreli):

>

Hey! C++ da, D de yüksek seviyeli dildir. Düşük seviyeli de olabiliyorlar diye küçümsemeyelim. :)

Bu tartışmaları önlemek için harelde orta seviyeli deniyor :-D Ama bal gibi düşük seviye. Siz bir python bir php kullanan birinin Türlerden çektiğini bilirmisiniz ? İşkence yapıyorlar resmen. Ya programı kullanan kişi yanlışlıkla int yerine string bir değer girerse. Hatayı önlemek için neler yaptırıyor dil.

Alıntı (acehreli):

>

Not: Can mı demeliyiz, Alpay mı, yoksa canalpay mı? :)

Çoğunluk bana Can der. Ama hocalarımdan bazıları nedenini bilmediğim halde Alpay der. İnternette de her zaman canalpay takma adını kullanırım. İstediğinizi diye bilirsiniz. Ama Can en alışık olduğum addır.

Bu arada ben de size aynı soruyu sormuştum.
Hatta kendimden alıntı yapıyorum:
Alıntı (canalpay):

>

Ali (bey, abi,hoca hangisini tercih edersiniz bilmiyorum.)

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

September 16, 2009

Alıntı (acehreli):

>

Ben bütün bildiklerime dayanarak, deney hataları nedeniyle farklı gibi görünen ama hızları aynı olan üç fonksiyon görüyorum.

Olabilir. Zaten mesajımı iyi okuduysanız bende buna benzer bir şey dedim. Hatta hiç bir şey bilmeme rağmen. :-)

Alıntı (acehreli):

>

Doğru biliyorsun ama derleyicinin görevini azımsıyorsun. Derleyici, hız kazancı gördüğü için bizim if'imizi de arka planda switch olarak gerçekleştirebilir. Bu, antika derleyicilerin bile yıllardır bildikleri bir numaradır.

Derlenen bir dili doğru düzgün öğrenemediğim için derleyicilerin gücünü pek bilmiyorum. Yorumlanan dillerde hep ip ucunda biz olduğumuz için ben her bir şeyi deneyerek yapmaya alıştım.

Alıntı (acehreli):

>

küçükHarf = (büyükHarf == 'I') ? 'ı' : toUniLower(büyükHarf);

Bu kodun da bir karşılaştırma yaptığı açık herhalde? Nasıl olur da aynı işi yaptığı halde daha hızlı olabilir? ;)

Php gibi yorumlanan dilllerde switch ile if hız olarak oldukça farkettiriyor. Derleyici gibi iki saat acaba bu if kullanarak doğru mu yapmış, ben şunu bir switch haline getirirsem daha hızlı olur diye düşünemiyor. Bende o sisteme alıştığım için derleyicinin sınırını bilmiyorum. Bu yüzden size soruyorum.

küçükHarf = (büyükHarf == 'I') ? 'ı' : toUniLower(büyükHarf);

Ama bunla switch hız açısından çok farkeder bence. Çünkü switchde ben gereksiz yere iki kontrol yapmıştım ama bir kontrol yetiyor sanırım. E ikinci kontrolün gereksiz olduğunu derleyici anlayabilir mi? anlayamaz.

Alıntı (acehreli):

>

Bunu ben de geç öğrendim, kendim farketmemiştim: Türkiye'de günlük olan kullanılan orta isimdir. En azından bazı insanlar bunu böyle biliyorlar. Amerika'da ise ön isim günlük olarak kullanılır; orta isim yedek... Bu yüzden sıkıntı çeken Türkler tanıyorum.

Evet doğru söylüyorsunuz ama bence asıl neden can ismi çok kullanılıyor. Hatta isme gelen bir ek gibi. Örn:Osmancan Nesimican ... E insanlar bir süre sonra candan bıkıyor. Bu yüzden Can yerine ne bulsalar kullanıyorlar. Ben Can ismine alışık olmasaydım Alpay'ı tercih ederdim. Çünkü Can Farsça Alpay Öztürkçe. Ben size Ali Bey demeye devam ediyorum.

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