Как оценивать различные оболочки

Я хочу знать, является ли оболочка 1 лучше для задания, чем shell 2, с тестом, который я обрабатываю, возможно, с оболочкой 3, например, ksh, dash, bash или zsh. Я использую тестовый скрипт, который строит мои проекты, запускает его, загружает его через стандартную версию и анализирует поведение оболочки с Valgrind, чтобы получить очень информативные следы того, что делает код. Теперь я задаюсь вопросом, можете ли вы помочь мне с хорошими командами оболочки для целей тестирования, если я хочу провести сравнение между 2-мя раковинами и более сложными конвейерами, так как я в основном делал тестовые примеры с нетривиальными конвейерами randon.

Я могу себе представить, как большая работа, сглаживающая большие файлы, – это хороший способ узнать, какая оболочка «быстрее», сделав дорогостоящую работу, или это вопрос извлечения большого сценария оболочки?

Оболочка, которую я хочу протестировать, может принимать входные данные, как в этом скрипте, и Valgrind может измерять проблемы с выравниванием данных или другие ошибки при тестировании дорогостоящих трубопроводов.

Знаете ли вы хороший сценарий оболочки для тестирования разных оболочек?

#!/bin/sh echo "-- Testing our implementation of POSIX shell --" echo "" echo "- If you have any problem in passing a test read the corresponding" echo "- source file to understand what the test is checking" echo "" printf "********************* PRESS ENTER TO RUN TESTS ... " #read _ make valgrind --leak-check=yes ./shell .<< EOF ls -al|grep open|awk '{print \$9}' EOF printf "********************* TEST WILDCARDS \n***** Press any key to listing all files in current directory...\nYou should see filesnames *.* below " read _ ./shell << EOF ls EOF printf "********************* TEST ALGORITHMS ... \n***** Press any key to run the algorithms... .\nYou should see the output from top -b -n1|head -8|tail -1 " read _ valgrind --leak-check=yes ./shell .<< EOF top|head -8|tail -1|sort -n|wc -l EOF printf "********************* TEST ALGORITHMS Part II. ... .\nYou should see the output from who|awk '{print \$4 ; print \$3}'|sort -n|wc -l. " read _ valgrind --leak-check=yes ./shell .<< EOF who|awk '{print \$4 ; print \$3}'|sort -n|wc -l EOF printf "********************* TEST CHECKENV. ..... .\nYou should see the output checkenv below " read _ valgrind --leak-check=yes ./shell .<< EOF checkenv EOF printf "********************* TEST DONE. YOU SHOULD SEE OUTPUT FROM TEST ABOVE ... " read _ 

2 Solutions collect form web for “Как оценивать различные оболочки”

Ключом к производительности оболочки является минимизация количества дорогостоящих системных вызовов, в частности fork() и exec() .

Не используйте grep или sed внутри оболочки. Никогда не используйте трубопровод с обоими; в большинстве случаев его можно свести только к sed или awk .

Если он усложняется, используйте язык, который может анализировать регулярные выражения и делать циклы, такие как awk или perl .

С другой стороны, если вы можете обойтись простой обработкой текста, предлагаемой оболочкой, вы можете выжать из нее большую производительность.

Тем не менее, at & t ksh93 всегда был оптимизирован для скорости, в то время как у bash и zsh больше возможностей.

 for shell in $(sed '1d' /etc/shells); do # or use your own list of shells echo "$shell -" time $shell /path/to/script done 
  • Как применять рекурсивные каталоги chmod без влияния на файлы?
  • Использование CSV-строки в качестве параметров команды
  • Zsh, нечувствительное между `_` и` -`
  • Сценарий Bash для подключения к интернету Teletalk
  • cvs auto setenv и логин без повторного ввода пароля
  • Получайте отдельную информацию о памяти из free -m comand
  • Обнаружение повторения шаблонов в файле
  • Взаимодействие с запущенной интерактивной консольной программой из другого процесса
  • Какая стандартная команда оболочки может оценивать escape-код Unicode в потоке?
  • Почему «$ sudo echo 'yo» работает, хотя эхо - это встроенная в оболочку функция?
  • Расширение имени файла для печати с помощью -exec в поиске
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.