parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

результаты измерений (в вакууме)

Dep 07.03.2004 18:43

Сразу оговорюсь - результаты из вакуума, потому что в жизни так никто делать НЕ БУДЕТ.

На больших строках TRIM (точнее, код TRIMа) действительно быстрее, однако жрет в два раза больше ресурсов.
На маленьких скорость одинаковая, однако ресурсов жрет так же в 2 раза больше.
Если же использовать вызов TRIM как обычно это делается (иначе зачем его отдельным методом оформлять?) и на коротких строках, то он проигрывает.

Отсюда делаю вывод: нужно выбирать от ситуации:
- если нужно только быстродействие на длинных строках и полно ресурсов, выбираем TRIM
- если нет, а также на всяких хостингах (особенно бесплатных) TRIM противопоказан из-за перерасхода памяти

Вот результаты (код внизу):

100 байт
1. 31.250 mSec 2292 blocks 
2. 15.625 mSec 1268 blocks 
3. 15.625 mSec  728 blocks 
1000 байт
1.  78.125 mSec 6828 blocks 
2. 109.375 mSec 5788 blocks 
3.  93.750 mSec 3000 blocks 
5000 байт
1. 234.375 mSec 32696 blocks 
2. 531.250 mSec 31644 blocks 
3. 406.250 mSec 15936 blocks 
10000 байт
1. 468.750 mSec 56740 blocks 
2. 1031.25 mSec 55688 blocks 
3. 828.125 mSec 27960 blocks 
Вот код:
$ss[$status:rusage]
$s1(^eval($ss.utime*1000))
$m1($ss.maxrss)

^for[i](1;1000){
	^if(def $text){
		$chr[^if(def $char){$char}{\s}]
		$text[^text.match[^^$chr*][]{}]
		$tbl[^text.match[^^(.*[^^$chr])$chr*^$]]
		$a[$tbl.1]
	}
}

$ss[$status:rusage]
$s2(^eval($ss.utime*1000))
$m2($ss.maxrss)

^for[i](1;1000){
	$text1[^text.match[^^\s+][]{}]
	$a[^text1.match[\s+^$][]{}]
}

$ss[$status:rusage]
$s3(^eval($ss.utime*1000))
$m3($ss.maxrss)

^for[i](1;1000){
	$a[^text.match[^^\s*(.*?)\s*^$][]{$match.1}]
}

$ss[$status:rusage]
$s4(^eval($ss.utime*1000))
$m4($ss.maxrss)

<table cellpadding='5' cellspacing='0' border='1'>
<tr>
	<td>1.</td>
	<td>^eval($s2-$s1)  mSec</td>
	<td>^eval($m2-$m1) blocks</td>
</tr>
<tr>
	<td>2.</td>
	<td>^eval($s3-$s2)  mSec</td>
	<td>^eval($m3-$m2) blocks</td>
</tr>
<tr>
	<td>3.</td>
	<td>^eval($s4-$s3)  mSec</td>
	<td>^eval($m4-$m3) blocks</td>
</tr>
</table>
P.S. Окошко для текста бы строк на 15-20... 10 мало.