シェル1がシェル2よりも作業が良いかどうかを知りたいです。 ksh、dash、bash、zshなどのシェル3を使用してテストできます。私はテストスクリプトを使用してプロジェクトを構築し、起動し、標準入力を介して入力を提供し、Valgrindを使用してシェルの動作を分析し、コードが実行する操作の有益なトレースを取得します。今、2つのシェルとより複雑なパイプラインの間をベンチマークしたいかどうか疑問に思います。テストケースを作成するために主にランダムな重要でないパイプラインを使用しているので、テストのための良いシェルコマンドを助けることができますか?
私は大きなファイルを通して大きな仕事をすることを想像できます。これは、高価なタスクを実行してどのシェルが「より高速」であるかを知るための良い方法ですか、それとも大きなシェルスクリプトを実行するのですか?
私がテストしたいシェルはこのスクリプトのような入力を受け入れることができ、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 _
答え1
答え2
for shell in $(sed '1d' /etc/shells); do # or use your own list of shells
echo "$shell -"
time $shell /path/to/script
done