[過去ログ] シェルスクリプト総合 その31 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
709
(2): デフォルトの名無しさん [sage] 2019/10/01(火) 16:40:08.47 ID:8eIOCDAd(1/18) AAS
hoge () {
echo "Hello"
}

for i in $(seq 1000); do
hoge
a=$(hoge)
done

myfunc と a=$(myfunc) の実行時間の差はなんなん?標準出力を横取りするためだけにしてはコストが高いかな
簡単に思いつくのは横取りするためパイプでで別プロセスにしなきゃとかかな?
715
(1): デフォルトの名無しさん [sage] 2019/10/01(火) 18:59:48.82 ID:8eIOCDAd(4/18) AAS
>>712
712(1): デフォルトの名無しさん [sage] 2019/10/01(火) 16:54:32.38 ID:8eIOCDAd(2/18) AAS
なるほど。ksh(だけが?)がなんか賢いかな。zsh他も差がある
zsh他も差があるは、>>709で体感できる差があるが正しいか
kshでも差があるね。ループ数増やせば体感できるほどの差となるね
716
(1): デフォルトの名無しさん [sage] 2019/10/01(火) 19:16:54.12 ID:fust4gpU(1/9) AAS
>>709
forkだよ。$( ) の部分がサブシェルになってて
多くのシェルではサブシェル = 別プロセス生成で実装されてる。
そのおかげでサブシェルの中でcdを実行したり変数を使ったりしても
呼び出し元は汚染されたりしない

kshはサブシェルの実装が最適化されていて
全てではないが、サブシェルの部分を同一プロセスで実行する。
独自で状態の保存と復帰を実装してるのだろう。

外部リンク[html]:codeday.me

kshは速いと言っちゃ速いんだが、その(複雑な?)仕組みのせいで
バグのもとになってたりする。ということを書いてあるページが
有ったんだがどこか忘れた。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.043s