The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"бенчмарк. awk не медленнее. оплата - в кассу!"
Отправлено Andrey Mitrofanov, 30-Дек-08 12:26 
>awk и перебор в цикле делать умею, но это медленно.

А я сумел сделать на sed-е и это медленнее, чем на awk-е (сравнивал с реализацией vlc из реплики #6)

Итак. Входные данные - два "тестовых набора" (первый - попроще, второй - сильно вложенный) с разным количеством строк. Тестируемые скрипты (четыре)- мой на sed (без расширения; запускался под GNU sed) и .awk от vlc, запускаемый под gawk "как awk", под gawk "как gawk" и под nawk.

Вывод: awk не медленнее sed-а. Проверявшаяся реализация скрипта и на проверявшихся реализациях интерпретаторов -- по крайней мере.

ПРИЛОЖЕНИЕ 1, прОтокол.

$ cat ./BM.sh
#!/bin/bash

data0() { yes start|head -$1 ;echo message; yes end|head -$1; }
data201() { for(( i=$1; i>0; i-=201)); do data0 $((i>201?100:i/2)); done; }

dataMAX() { yes start|head -$(($1/2)) ;echo message; yes end|head -$(($1/2)); }

BM() { echo "$3 `$2 $3 | time ./$1 2>&1 >/dev/null \
|awk '/elapsed/{print $1" "$4((gensub(/:/,"",1,$3)+0>3)?" "$3:"")}' `"; }

for scr in indent indent.awk indent.gawk indent.nawk; do
  echo "*** $scr, data201"
  for n in 1 10 100 1000 `seq 10000 10000 100000`; do
    BM $scr "data201" $n
    done
  echo "*** $scr, dataMAX"
  for n in 1 10 100 `seq 1000 1000 10000`; do
    BM $scr "dataMAX" $n
    done
  done
$ ./BM.sh
*** indent, data201
1 0.00user 0%CPU
10 0.00user 0%CPU
100 0.00user 17%CPU
1000 0.04user 32%CPU
10000 0.54user 43%CPU
20000 1.04user 43%CPU
30000 1.78user 49%CPU
40000 2.20user 46%CPU 0:04.81elapsed
50000 2.82user 45%CPU 0:06.22elapsed
60000 3.18user 31%CPU 0:10.03elapsed
70000 3.69user 43%CPU 0:08.43elapsed
80000 4.42user 43%CPU 0:10.23elapsed
90000 4.78user 32%CPU 0:14.65elapsed
100000 5.70user 31%CPU 0:17.96elapsed
*** indent, dataMAX
1 0.00user 0%CPU
10 0.00user 0%CPU
100 0.00user 28%CPU
1000 0.26user 70%CPU
2000 0.92user 92%CPU
3000 2.06user 64%CPU
4000 3.88user 69%CPU 0:05.58elapsed
5000 6.30user 96%CPU 0:06.55elapsed
6000 8.04user 77%CPU 0:10.37elapsed
7000 12.66user 87%CPU 0:14.44elapsed
8000 14.28user 95%CPU 0:14.92elapsed
9000 19.65user 91%CPU 0:21.48elapsed
10000 22.93user 95%CPU 0:23.96elapsed
*** indent.awk, data201
1 0.00user 0%CPU
10 0.00user 0%CPU
100 0.00user 36%CPU
1000 0.00user 3%CPU
10000 0.03user 4%CPU
20000 0.07user 5%CPU
30000 0.07user 4%CPU
40000 0.12user 5%CPU
50000 0.18user 5%CPU
60000 0.20user 4%CPU 0:04.06elapsed
70000 0.30user 5%CPU 0:05.41elapsed
80000 0.29user 5%CPU 0:05.57elapsed
90000 0.29user 4%CPU 0:07.14elapsed
100000 0.36user 5%CPU 0:07.36elapsed
*** indent.awk, dataMAX
1 0.00user 61%CPU
10 0.00user 0%CPU
100 0.00user 28%CPU
1000 0.00user 25%CPU
2000 0.00user 16%CPU
3000 0.01user 51%CPU
4000 0.02user 77%CPU
5000 0.03user 91%CPU
6000 0.03user 63%CPU
7000 0.04user 70%CPU
8000 0.06user 81%CPU
9000 0.07user 85%CPU
10000 0.08user 89%CPU
*** indent.gawk, data201
1 0.00user 0%CPU
10 0.00user 0%CPU
100 0.00user 0%CPU
1000 0.00user 11%CPU
10000 0.04user 7%CPU
20000 0.09user 7%CPU
30000 0.12user 6%CPU
40000 0.13user 5%CPU
50000 0.15user 4%CPU
60000 0.19user 4%CPU 0:05.02elapsed
70000 0.19user 3%CPU 0:06.39elapsed
80000 0.26user 4%CPU 0:06.33elapsed
90000 0.27user 3%CPU 0:07.65elapsed
100000 0.35user 4%CPU 0:07.96elapsed
*** indent.gawk, dataMAX
1 0.00user 0%CPU
10 0.00user 21%CPU
100 0.00user 0%CPU
1000 0.00user 16%CPU
2000 0.00user 30%CPU
3000 0.01user 47%CPU
4000 0.03user 68%CPU
5000 0.03user 81%CPU
6000 0.04user 77%CPU
7000 0.06user 86%CPU
8000 0.06user 39%CPU
9000 0.08user 52%CPU
10000 0.10user 42%CPU
*** indent.nawk, data201
1 0.00user 9%CPU
10 0.00user 26%CPU
100 0.00user 25%CPU
1000 0.00user 2%CPU
10000 0.03user 3%CPU
20000 0.05user 2%CPU
30000 0.11user 2%CPU
40000 0.10user 3%CPU 0:04.17elapsed
50000 0.18user 5%CPU
60000 0.19user 4%CPU 0:04.98elapsed
70000 0.20user 3%CPU 0:05.80elapsed
80000 0.28user 4%CPU 0:06.26elapsed
90000 0.26user 3%CPU 0:07.40elapsed
100000 0.33user 4%CPU 0:08.11elapsed
*** indent.nawk, dataMAX
1 0.00user 0%CPU
10 0.00user 0%CPU
100 0.00user 0%CPU
1000 0.00user 27%CPU
2000 0.01user 48%CPU
3000 0.01user 48%CPU
4000 0.02user 47%CPU
5000 0.03user 70%CPU
6000 0.04user 75%CPU
7000 0.04user 68%CPU
8000 0.04user 64%CPU
9000 0.08user 97%CPU
10000 0.09user 86%CPU
$ exit

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру