Düzenli ifade yolu kesinlikle benim seçim olacaktır.
Ben Veynom fonksiyonu ve düzenli bir ifade ile 320 kelime bir dize üzerinde küçük bir test yaptım
function preg( $txt ) {
return !preg_match( '/\b(\w+)\b.*?\1/', $txt );
}
İşte testi
$time['preg'] = microtime( true );
for( $i = 0; $i < 1000; $i++ ) {
preg( $txt );
}
$time['preg'] = microtime( true ) - $time['preg'];
$time['veynom-thewickedflea'] = microtime( true );
for( $i = 0; $i < 1000; $i++ ) {
single_use_of_words( $txt );
}
$time['veynom-thewickedflea'] = microtime( true ) - $time['veynom-thewickedflea'];
print_r( $time );
Ve burada ben var sonuç var
Array
(
[preg] => 0.197616815567
[veynom-thewickedflea] => 0.487532138824
)
Hangi RegExp çözelti, hem de çok daha kısa olan iki kat daha hızlı daha fazla olduğunu göstermektedir. (320 kelime bir dize 1000 yineleme ANR)
Ben olsun 10 000 yineleme üzerinde testi çalıştırdığınızda
Array
(
[preg] => 1.51235699654
[veynom-thewickedflea] => 4.99487900734
)
Olmayan RegExp çözümü de çok daha fazla bellek kullanır.
Bu yüzden benim için .. Düzenli İfadeler, gaz dolu bir tank var çünkü
EDIT
The text I tested against has duplicate words, If it doesn't, the results may be different. I'll post another set of results.
Update
With the duplicates stripped out ( now 186 words ) the results for 1000 iterations is:
Array
(
[preg] => 0.235826015472
[veynom-thewickedflea] => 0.2528860569
)
Eşitler Hakkında