The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз командного интерпретатора Bash 5.1, opennews (?), 08-Дек-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


225. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (263), 09-Дек-20, 01:11 
Забавный тест, вот другой, где все "несколько иначе":
~> time dash -c 'for a in `seq 100000`; do ( :; ); done'
    0m14.03s real     0m09.18s user     0m08.42s system
~> time ash -c 'for a in `seq 100000`; do ( :; ); done'
    0m45.92s real     0m33.87s user     0m15.39s system
~> time mksh -c 'for a in `seq 100000`; do ( :; ); done'
    0m18.92s real     0m12.37s user     0m10.22s system
~> time bash -c 'for a in `seq 100000`; do ( :; ); done'
    0m24.39s real     0m16.00s user     0m13.59s system

Занимательно, что твой тест в ash просто летает:
~> time dash -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'                                                        
    0m02.59s real     0m02.58s user     0m00.00s system
~> time ash -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'                                                          
    0m04.02s real     0m03.67s user     0m00.34s system
~> time mksh -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'                                                        
    0m04.80s real     0m04.79s user     0m00.00s system
~> time bash -c 'D=1; while [ "$D" -lt 1000000 ]; do D="$((D+1))"; done'                                                        
    0m09.51s real     0m09.49s user     0m00.00s system

dash-0.5.10.2
bash-5.0.17
mksh-59
busybox-1.31.1

Ответить | Правка | К родителю #153 | Наверх | Cообщить модератору

233. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (16), 09-Дек-20, 01:45 
Отличные "тесты", ага. Десятиминутный победитель из того теста справился тут за секунду.

$  time tcsh ~/bin/cshseq.sh

real    0m1.250s
user    0m0.765s
sys     0m0.469s
$  time dash -c 'for a in `seq 100000`; do ( :; ); done'

real    0m14.488s
user    0m8.667s
sys     0m6.319s
$  time bash -c 'for a in `seq 100000`; do ( :; ); done'

real    0m36.407s
user    0m19.588s
sys     0m17.738s
$  time zsh -c 'for a in `seq 100000`; do ( :; ); done'

real    0m45.363s
user    0m22.131s
sys     0m25.281s


Ответить | Правка | Наверх | Cообщить модератору

237. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (263), 09-Дек-20, 02:07 
Хз, что у тебя в скрипет, а у меня:
~> cat t.tcsh
foreach a (`seq 100000`)
(:;)
end
~> time tcsh t.tcsh
    0m26.02s real     0m16.09s user     0m15.83s system
Ответить | Правка | Наверх | Cообщить модератору

238. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (16), 09-Дек-20, 02:13 
#/bin/tcsh
foreach i ( `seq 100000` )
   :;
end

можно с echo "$i" -- ровно то же самое.

Ответить | Правка | Наверх | Cообщить модератору

240. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (16), 09-Дек-20, 02:17 
В шебанге опечатка, но я скармливал интерпретатору поэтому не важно.
Ответить | Правка | Наверх | Cообщить модератору

261. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (261), 09-Дек-20, 14:26 
В dash/bash круглые скобки форкают sub-shell. Я так понимаю, скрипт tcsh этого не делает, так что тест некорректен.
Ответить | Правка | К родителю #238 | Наверх | Cообщить модератору

266. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (263), 09-Дек-20, 15:00 
> В dash/bash круглые скобки форкают sub-shell. Я так понимаю, скрипт tcsh этого
> не делает, так что тест некорректен.

https://linux.die.net/man/1/tcsh

Builtin and non-builtin command execution

Builtin commands are executed within the shell. If any component of a pipeline except the last is a builtin command, the pipeline is executed in a subshell.

Parenthesized commands are always executed in a subshell.
    (cd; pwd); pwd
thus prints the home directory, leaving you where you were (printing this after the home directory), while
    cd; pwd
leaves you in the home directory. Parenthesized commands are most often used to prevent cd from affecting the current shell.

Ответить | Правка | Наверх | Cообщить модератору

278. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (261), 09-Дек-20, 22:11 
О том и речь.
Ответить | Правка | Наверх | Cообщить модератору

241. "Релиз командного интерпретатора Bash 5.1"  +/
Сообщение от Аноним (16), 09-Дек-20, 02:20 
В общем да на (:;) выдало это

real    0m46.337s
user    0m24.146s
sys     0m24.104s

Ответить | Правка | К родителю #237 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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