Тестирование быстродействия
Объяснение команды 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