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. ]