
Оптимизация perl кода. Часть 1
1. Измерение времени выполнения программы в linux time perl arg1=val1 arg2=val2 real 0m0.123 - время выполнения программы user 0m0.121 - процессорное время, использованное текущим пользователем sys 0m0.023 - чистое процессорное время, необходимое на выполнение программы 2. Benchmark Сравнение двух функций, делающих одно и тоже разными методами:#!/usr/bin/perl use Benchmark; timethese($ARGV[0] || 1000000, { 'function1' => "&function1()", 'function2' => "&function2()", });Benchmark: timing 1000000 iterations of function1, function2... function1: 7 wallclock secs (6.54 usr + 0.00 sys = 6.54 CPU) @ 152905.20/s (n=1000000) function2: 4 wallclock secs (4.79 usr + 0.01 sys = 4.78 CPU) @ 209205.02/s (n=1000000) 3. Профилирование
perl -d:DProf program_name prof_result.outМодуль DProf поставляется вместе с инструментом dprofpp, который позволяет анализировать результаты профилирования. По умолчанию результат выводится в tmon.out.
dprofpp tmon.out- в результате будет список функций, отсортированный по времени, потраченном на выполнение каждой функции. Подробности в perldoc dprofpp. 4. Покрытие строк кода при выполнении Модули, используемые для определения покрытия: Devel::Coverage и Devel::Cover. Самая большая польза от этого - выяснить какие строки вообще не выполняются (они могут быть вообще не нужны или не покрыты тестированием). perl -d:Cover prog cover_prog.out perldoc Devel::Cover... 5. Что можно узнать о программе, если perl скомпилирован с опцией -DDEBUGGING? Перед компиляцией перла, надо запустить конфигуратор с -DDEBUGGING: tar -xvzf perl-5.12.2.stable.tar.gz; cd perl-5.12.2; sh Configure -Dprefix=/opt/perl/perldb -Uinstallusrbinperl -Doptimize='-g' -de -DDEBUGGING -Dusethreads; make && make test && make install PERLNAME=perldb;
Похожие записи
10:57:06 18.04.2011
Роман
Профайлер
Очень удобный профайлер для перла - Devel::NYTProf
13:24:17 19.04.2011
sn
спасибо :)