1. это подсчёт числа инкрементных операций, выполняемых конкретным shell интерпретатором, поменяйте интерпретатор, или даже его версию, а по команде вида ./test вызывается дефаултный для пользователя интерпретатор, которого вы можете и не знать - и все цифры ваши поплывут!
Именно поэтому все тесты очень условны и их пытаются привязать к конкретным операциям типа отрисовка полигона, разархивирование и прочая лабуда.
Сами тесты производительности мало кому интересны, кроме производителей, норовящих продать свой товар, и тестами подтасовывающих (или не подтасовывающих) характеристики товара
.
Куда интересней и важная и сложная обратная задача: получение, измерение, выдержка и т.д.
фиксированных временных интервалов в программах, не зависящие (интервалы) от оборудования на которых выполняется. Как легко понять, эта задача во многом обратная оценке производительности (для
активных задержек так это прямо обратная залдача).
А вообще, задача работы с временными интервалами в многозадачной операционной системе, наверное, самое сложное и неожиданное по результатам, что есть в операционной системе.
Пользователь решил продолжить мысль 27 Февраля 2012, 16:09:57:
1. это подсчёт числа инкрементных операций, выполняемых конкретным shell интерпретатором, поменяйте интерпретатор, или даже его версию, а по команде вида ./test вызывается дефаултный для пользователя интерпретатор, которого вы можете и не знать - и все цифры ваши поплывут!
[olej@notebook speed0]$ ./test.sh
Тестирование скорости ...
-------------------
Результат: 3952
-------------------
[olej@notebook speed0]$ zsh ./test.sh
Тестирование скорости ...
-------------------
Результат: 935
-------------------
[olej@notebook speed0]$ ksh ./test.sh
Тестирование скорости ...
-------------------
Результат: 4570
-------------------
- ну как вам это понравится?
(это всё тот же исходный скрипт, подправленный только на соответствие переносимому синтаксису shell, без использования расширений bash + период я сменил на 10 вместо 60 ... в облом ждать
, чтоб сами цифры не смущали).
Как вам понравится оценки "производительности", которые меняются в 5 раз в записимости от того, какой shell вы использовали для такой оценки?
ну и вот это:
[olej@notebook speed0]$ zsh ./test.sh
Тестирование скорости ...
-------------------
Результат: 924
-------------------
[olej@notebook speed0]$ zsh ./test.sh
Тестирование скорости ...
-------------------
Результат: 1017
-------------------
Пользователь решил продолжить мысль 27 Февраля 2012, 18:07:52:
поскольку измерение временных интервалов это сильно непростая задача, то решил я чуть подправить ваш тест:
- начало раскрутки цикла счёта выполненных операций должно начинаться не в произвольное время когда запустили скрипт, а в
начале следующей секунды после запуска, чтобы иметь число
полных секунд:
period=10
if [ -n "$1" ]
then
let period="$1"
fi
echo "Тестирование скорости, период $period сек."
date1=$(date +%S)
date=$date1
while [ $date1 -eq $date ]; do
date=$(date +%S)
done
date0=$date
let "date1=($date+$period)%60"
int=0
while [ $date1 -ne $date ]; do
date=$(date +%S)
let "int=$int+1"
done
let "int=$int/$period"
echo "Результат [$date0...$date1]: $int"
- ну, и возможность задания периода параметром я добавил (зачем 60 сек.?) + нормировку результата на период: число операций за одну
секунду.
Вот теперь результаты более устойчивы даже на 1 сек. измерении:
[olej@notebook speed0]$ sudo nice -n-19 ./test.sh 1
Тестирование скорости, период 1 сек.
Результат [25...26]: 447
[olej@notebook speed0]$ sudo nice -n-19 ./test.sh 1
Тестирование скорости, период 1 сек.
Результат [30...31]: 423
[olej@notebook speed0]$ sudo nice -n-19 ./test.sh 1
Тестирование скорости, период 1 сек.
Результат [32...33]: 567
[olej@notebook speed0]$ sudo nice -n-19 ./test.sh 1
Тестирование скорости, период 1 сек.
Результат [34...35]: 534
[olej@notebook speed0]$ sudo nice -n-19 ./test.sh 1
Тестирование скорости, период 1 сек.
Результат [36...37]: 556
[olej@notebook speed0]$ sudo nice -n-19 ./test.sh 1
Тестирование скорости, период 1 сек.
Результат [38...39]: 583
И кроме того, они хорошо совпадают с результатами на больших периодах усреднения:
[olej@notebook speed0]$ sudo nice -n-19 ./test.sh 30
Тестирование скорости, период 30 сек.
Результат [47...17]: 488
- вот здесь
в начале 47-й секунды счёт начался, а
в начале 17-й секунды следующей минуты закончмлся.