Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Сообщения: 1862
Благодарности: 132

Профиль | Сайт | Отправить PM | Цитировать


Тестирование быстродействия
Объяснение команды time (это внутренняя команда tcsh)
`%Uu %Ss %E %P %X+%Dk %I+%Oio %Fpf+%Ww'
%U The time the process spent in user mode in cpu seconds.
%S The time the process spent in kernel mode in cpu seconds.
%E The elapsed (wall clock) time in seconds.
%P The CPU percentage computed as (%U + %S) / %E.
%X The average amount in (shared) text space used in Kbytes.
%D The average amount in (unshared) data/stack space used in Kbytes.
%I The number of input operations.
%O The number of output operations.
%F The number of major page faults (page needed to be brought from disk).
%W Number of times the process was swapped.

001-1
Вначале протестируем скорость выполнения скрипта командным интерпретатором. Простой цикл изменяющий значение от 10000 до 20000.
Скрипт исполняющий:
PHP код: Выделить весь код

#!/bin/sh

#001
dir=/tmp/test/test1
mkdir $dir
cd $dir
i
=10000
end
=20000
while [ "$i" != "$end" ]
do
    
i=`expr $i + 1`
done 

Скрипт запускающий:
PHP код: Выделить весь код

#!/bin/tcsh


set timefs=`time /tmp/test10000
echo 
$timefs >> /tmp/testfs.log 


Запускаем: time /tmp/test10000
Результат:
1) 7.179u 24.393s 0:37.95 83.1% 56+185k 0+0io 0pf+0w
4) 7.586u 23.898s 0:34.77 90.5% 54+184k 0+0io 0pf+0w
5) 7.348u 24.172s 0:34.81 90.5% 54+185k 0+0io 0pf+0w

Запускаем: /tmp/testfs
Результат:
2) 7.202u 24.354s 0:34.88 90.4% 55+184k 0+0io 0pf+0w
3) 7.270u 24.384s 0:34.95 90.5% 56+185k 0+0io 0pf+0w
6) 7.330u 24.240s 0:36.15 87.3% 55+183k 0+0io 0pf+0w

001-2
Добавляем команду есно, выводящую значение переменной на экран.
PHP код: Выделить весь код

#!/bin/sh

#001
dir=/tmp/test/test1
mkdir $dir
cd $dir
i
=10000
end
=20000
while [ "$i" != "$end" ]
do
    echo 
$i
    i
=`expr $i + 1`
done 

Запускаем: time /tmp/test10000
Результат:
1) 7.893u 25.120s 0:39.75 83.0% 57+187k 0+0io 0pf+0w
3) 7.448u 25.555s 0:41.01 80.4% 57+186k 0+0io 0pf+0w
5) 7.710u 25.326s 0:42.94 76.9% 60+188k 0+0io 0pf+0w

Запускаем: /tmp/testfs
Результат:
2) 7.340u 24.591s 0:36.84 86.6% 56+187k 0+0io 0pf+0w
4) 7.652u 24.271s 0:36.84 86.6% 56+187k 0+0io 0pf+0w
6) 7.402u 24.504s 0:36.83 86.6% 56+186k 0+0io 0pf+0w


001-3
Просто создание файла нулевой длины
PHP код: Выделить весь код

#!/bin/sh

#001
dir=/tmp/test/test1
mkdir $dir
cd $dir
i
=10000
end
=20000
while [ "$i" != "$end" ]
do
     
touch "$i"
    
i=`expr $i + 1`
done 

Запускаем: time /tmp/test10000
Результат:
1) 12.111u 43.326s 1:04.79 85.5% 54+180k 157+0io 0pf+0w
3) 12.007u 43.196s 1:05.69 84.0% 56+182k 158+0io 0pf+0w
5) 12.030u 43.177s 1:02.33 88.5% 55+182k 0+0io 0pf+0w

Запускаем: /tmp/testfs
Результат:
2) 12.405u 42.744s 1:02.26 88.5% 54+181k 9+0io 0pf+0w
4) 12.402u 42.678s 1:02.07 88.7% 54+182k 0+0io 0pf+0w
6) 12.049u 42.993s 1:03.47 86.7% 55+182k 0+0io 0pf+0w

001-4
Запись некоторого текста в файл, если его не существует - он создается.
PHP код: Выделить весь код

#!/bin/sh

#001
dir=/tmp/test/test1
mkdir $dir
cd $dir
i
=10000
end
=20000
while [ "$i" != "$end" ]
do
    echo    
'And this file (' $i ') was generated ' `date`  >> $i
    i
=`expr $i + 1`
done 

Запускаем: time /tmp/test10000
Результат:
1) 14.642u 48.725s 1:12.49 87.4% 55+184k 0+0io 0pf+0w
3) 14.953u 48.294s 1:13.42 86.1% 55+183k 0+0io 0pf+0w
5) 14.465u 48.775s 1:12.24 87.5% 54+184k 0+0io 0pf+0w

Запускаем: /tmp/testfs
Результат:
2) 14.954u 48.323s 1:15.24 84.0% 55+184k 0+0io 0pf+0w
4) 14.932u 48.448s 1:12.51 87.3% 55+184k 0+0io 0pf+0w
6) 14.736u 48.387s 1:12.24 87.3% 55+184k 0+0io 0pf+0w


001-4
Запись два раза некоторого текста в файл, если его не существует - он создается.
PHP код: Выделить весь код

#!/bin/sh

#001
dir=/tmp/test/test1
mkdir $dir
cd $dir
i
=10000
end
=20000
while [ "$i" != "$end" ]
do
    echo    
'And this file (' $i ') was generated ' `date`  >> $i
    
echo   `env` >> $i
    i
=`expr $i + 1`
done 

Запускаем: time /tmp/test10000
Результат:
1) 21.137u 68.812s 1:42.95 87.3% 58+184k 0+0io 2pf+0w
3) 21.057u 68.592s 1:43.86 86.3% 56+184k 0+0io 0pf+0w
5) 21.176u 68.506s 1:41.04 88.7% 56+183k 0+0io 0pf+0w

Запускаем: /tmp/testfs
Результат:
2) 20.695u 68.710s 1:42.00 87.6% 56+184k 0+0io 0pf+0w
4) 21.164u 68.392s 1:40.73 88.9% 57+184k 0+0io 0pf+0w
6) 20.559u 69.249s 1:42.35 87.7% 57+184k 0+0io 0pf+0w


001-5
Сначала создаем файл, потом в него пишем информацию.
PHP код: Выделить весь код

#!/bin/sh

#001
dir=/tmp/test/test1
mkdir $dir
cd $dir
i
=10000
end
=20000
while [ "$i" != "$end" ]
do
    
touch "$i"
    
echo    'And this file (' $i ') was generated ' `date`  >> $i
    
echo   `env` >> $i
    i
=`expr $i + 1`
done 

Запускаем: time /tmp/test10000
Результат:
1) 25.683u 86.701s 2:08.34 87.5% 56+183k 0+0io 0pf+0w
3) 25.445u 87.655s 2:08.24 88.1% 57+183k 0+0io 0pf+0w
5) 25.141u 87.789s 2:09.79 87.0% 56+183k 0+0io 0pf+0w

Запускаем: /tmp/testfs
Результат:
2) 25.946u 86.947s 2:09.46 87.1% 56+183k 0+0io 0pf+0w
4) 25.513u 87.211s 2:08.09 88.0% 57+183k 0+0io 0pf+0w
6) 25.594u 87.748s 2:10.48 86.8% 57+183k 0+0io 0pf+0w


Отлично? Отлично!
А теперь Perl

Простой цикл.
PHP код: Выделить весь код

#!/usr/bin/perl

$dir="/tmp/test/test1";
mkdir $dir,0777;
$i=10000;
while (
$i 20000)
        {
#        $newfile = "/tmp/test/test1/$i";
#        print "$newfile\n";
#        open (INFO, ">$newfile"); # Открыть файл для записи
#        print INFO "And this file (", $i, ") was generated ", localtime, "\n";
#        close (INFO);
        
++$i;    # Увеличиваем счетчик на 1
        


0.000u 0.010s 0:00.01 100.0% 0+0k 0+0io 0pf+0w


Цикл выводящий информацию на экран
PHP код: Выделить весь код

#!/usr/bin/perl

$dir="/tmp/test/test1";
mkdir $dir,0777;
$i=10000;
while (
$i 20000)
        {
        
$newfile "/tmp/test/test1/$i";
        print 
"$newfile\n";
#        open (INFO, ">$newfile"); # Открыть файл для записи
#        print INFO "And this file (", $i, ") was generated ", localtime, "\n";
#        close (INFO);
        
++$i;    # Увеличиваем счетчик на 1
        


0.044u 0.011s 0:00.43 11.6% 8+268k 0+0io 0pf+0w

Цикл записывающий в файл
PHP код: Выделить весь код

#!/usr/bin/perl

$dir="/tmp/test/test1";
mkdir $dir,0777;
$i=10000;
while (
$i 20000)
        {
        
$newfile "/tmp/test/test1/$i";
        
open (INFO">$newfile"); # Открыть файл для записи
        
print INFO "And this file ("$i") was generated "localtime"\n";
        
close (INFO);
        ++
$i;    # Увеличиваем счетчик на 1
        


0.440u 0.970s 0:02.47 57.0% 10+359k 0+1io 0pf+0w

Цикл записывающий в файл два раза.
PHP код: Выделить весь код

#!/usr/bin/perl

$dir="/tmp/test/test1";
mkdir $dir,0777;
$i=10000;
while (
$i 20000)
        {
        
$newfile "/tmp/test/test1/$i";
        
open (INFO">$newfile"); # Открыть файл для записи
        
print INFO "And this file ("$i") was generated "localtime"\n";
        
close (INFO);
        
open (INFO">$newfile"); # Открыть файл для записи
        
print INFO "And this file ("$i") was generated "localtime"\n";
        
close (INFO);
        ++
$i;    # Увеличиваем счетчик на 1
        


0.838u 1.732s 0:03.79 67.5% 10+343k 0+0io 0pf+0w

-------
ДИЛЕТАНТ - это курьезный человек, который испытывает удовольствие делать то, чего не умеет.
AMD 4200+, MSI Neo2Platinum, 2Gb, ATI 9600, D-Link DWL-G510, FreeBSD 8.0, KDE 4.3.4


Последний раз редактировалось Igor_I, 23-02-2007 в 14:02.


Отправлено: 13:57, 23-02-2007 | #12