Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Саян 09.02.2014 13:56
Привет. Исследуя странное расходы памяти Парсером в некоторых конфигурациях, я сделал вот такой скрипт (код ниже). Но прежде чем приступать к серьезным измерениям, обнаружил несколько неожиданное поведение статусных параметров. Точнее:@main[] $timestart(^curtime[]) $u[^request:uri.split[?;lh]]$u[$u.0] #загружает сам себя $loadurl[http://$env:SERVER_NAME/$u?load_tester=1] #или загружает главную страницу #$loadurl[http://$env:SERVER_NAME/?load_tester=1] $rm[^table::create{utime tv maxrss usedmem allmem}] $wait(0) $cnt(^form:cnt.int(0)) ^if($cnt){ #больше 1000 итераций не дает существенного улучшения статистики ^if($cnt > 1000){$cnt(1000)} ^for[i](0;$cnt){ $rn(^math:random(9999)) ^if($rn > 9900){^memory:compact[]} $before(^curtime[]) $x[^file::load[text;$loadurl&rn=$rn][$.any-status(true)]] ^wait.inc(^curtime[] - $before) ^rm.append{^untaint{$x.text}} } $utime(0) $tv(0) $maxrss(0) $usedmem(0) $allmem(0) ^try{ ^rm.menu{^utime.inc($rm.utime) ^tv.inc($rm.tv) ^maxrss.inc($rm.maxrss) ^usedmem.inc($rm.usedmem) ^allmem.inc($rm.allmem)} }{^blad[]} $rmc(^rm.count[]) <p>Среднее время выполнения скрипта utime ^eval($utime / $rmc * 1000)[%.3f] ms <p>Среднее время выполнения скрипта d(tv) ^eval($tv / $rmc * 1000)[%.3f] ms <p>Среднее время ожидания отклика ^eval($wait * 1000 / $rmc)[%.3f] ms <p> <p>Средняя память процесса maxrss ^eval($maxrss / $rmc)[%.0f] kbytes <p>Средняя память gc ^eval($usedmem / $rmc)[%.0f] kbytes <p>Средняя полная память gc ^eval($allmem / $rmc)[%.0f] kbytes }{ #эту строчку можно добавить в конец выполнения скрипта главной страницы на сайте ^if(def $form:load_tester){^for[i](1;999){$j(^math:random(9999))}^sleep(0)$response:body[$status:rusage.utime ^eval(^curtime[]-$timestart) $status:rusage.maxrss $status:memory.used $status:memory.ever_allocated_since_start]} } @curtime[] $result($status:rusage.tv_sec - 1391900000 + $status:rusage.tv_usec / 1000000 )Благодарю за внимание.