Benden tavsiyeler :
ytl_cevir fonksiyonunda (en azından aynı execution sürecinde) cache kullanmak performans açısından önemlidir.
sansur fonksiyonunda regex olarak "/{$word}/i" yerine '/[^A-Z]'.$word.'[^A-Z]/i' gibi bir şey kullanmak daha verimli olur. Çünkü sakıncası olan bazı sözcükler sakıncası olmayan bazı sözcüklerin parçası olabilir. Örneğin "Plastik toplayarak satarım." tümcesinin "Plastik topla(sansür) satarım." şekline dönüşmesi gereksizdir. Bunun yanında $replace değişkeninin dizi olması fazladan işlem zamanı ve bellek harcar; sadece preg_replace($words, '(sansür)', $metin) demek yeterli olur.
Bu arada rasgeleparola fonksiyonunda rastgele üretilen index aralığı karakter sayısı ile aynı değil. Orada 72 adet karakter tanımlanmış fakat yalnızca 0-39 aralığında değer üretiliyor. rand fonksiyonu yerine mt_rand kullanılırsa daha sağlam değerler üretilebilir. Bu arada $semboller değişkeni statik olarak tanımlanırsa tekrar kullanımlarda zamandan tasarruf sağlanabilir (dizilerde gözle görünür avantaj sağlıyor fakat stringlerde ne derece olur bilemiyorum).
Bunu şu şekilde test edebilirsiniz:function rasgeleparola1() {
$semboller = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
$sifre = '';
for($i=0;$i<7;$i++)
$sifre .= $semboller{rand() % 62};
return $sifre;
}
function rasgeleparola2() {
static $chars = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$output = '';
for($i=0; $i<7; $i++)
$output .= $chars[mt_rand()%62];
return $output;
}
$t0 = gettimeofday(1);
for($i=0; $i<10000; $i++)
$x = rasgeleparola1();
$t1 = gettimeofday(1);
for($i=0; $i<10000; $i++)
$x = rasgeleparola2();
$t2 = gettimeofday(1);
printf("rasgeleparola1: %8.6f ms\n", ($t1-$t0)*1000);
printf("rasgeleparola2: %8.6f ms\n", ($t2-$t1)*1000);
Let`s make this world a better place to live !
|