Alıntı:
> derleyici sandığınız kadar akıllı değilmiş
Derleyiciler işlerini derleme zamanında yaparlar ve bitirirler. N+1 konusu, çalışma zamanında gelen dizginin uzunluğu ile ilgili olduğu için derleyiciler bu konuda bir şey yapamazlar.
Derleyici, gelen dizginin uzunluğundan bağımsız olarak hızlı kod üretmeyi hedefler, ama burada yaşadığımız olay algoritmayla ilgiliydi. Zaten bu yüzden kütüphanelerdeki string sınıfları (örneğin C++'nın std::string'i), boyunu arttırmak gerektiğinde hep %50 kadar arttırır. Nasıl olsa artmak gerekti, yine gerekir, diye... Daha sonradan %50 yerine, daha büyük bir oranda arttırmanın daha iyi olduğu da gösterilmiştir. Bu, belleğin etkin kullanımıyla ilgilidir ve tesadüfen de altın orana eşittir! :) Dizginin boyunun 1.61 katı olarak büyümesi gerekir...
Bu arada, bende 9 değil, 7.5 saniye bekliyor. ;)
Makefile'a hiz_testi diye yeni bir hedef ekledim. Artık normal geliştirme zamanımızdan yemeyecek ama kendimiz istersek make'i hiz_testi ile şöyle başlatacağız:
make hiz_testi
capwords, bir dizgi içindeki bütün kelimelerin yalnızca baş harflerini büyük yapar: "ddili forum" -> "Ddili Forum".
assumeUnique, "tek olduğunu varsay" anlamındadır; bir fonksiyonun dış dünyaya "bu döndürdüğümün tek referansını size veriyorum, kendim içeride bir kopyasını tutmuyorum" demesiymiş.
std.contracts modülünde bulunuyor.
Biz de şimdiye kadar yazdığımız ve 'immutable' dizgi (örneğin dstring) döndüren bütün fonksiyonların sonunda bunu kullanabiliriz.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]