- 190 名前:デフォルトの名無しさん mailto:sage [2018/10/05(金) 02:53:44.46 ID:bSHFQ9XI0.net]
- >>187
現実的なポータビリティと速度のため POSIXの範囲でやれば、シェルが異なっても動くことが期待できる だけど現実的にはすべての環境がPOSIXに準拠してるわけではない 特にbusyboxは組み込み向けに必要最小限の機能に減らせるから sedやawkすらない環境というのもあり得るだろう そしてもう一つforkは遅い。WSL上だと目に見えて遅い 以下のコードをWSLで実行すると約25秒かかる。fork一回あたり2.5ミリ秒 Linuxだと約2秒。fork1回あたり2ミリ秒。10倍以上の差がある i=0 while [ $i -lt 10000 ]; do ( :; ) i=$((i+1)) done この()を外すとWSL上で0.05秒にまで減る。コマンド実行のオーバーヘッドに 埋もれてしまってよくわからないので、10,000から1,000,000から増やすと約1.7秒 つまり一回あたり0.0017ミリ秒。この値はLinuxでも変わらない 外部コマンドの実行でもforkが行われるから Linux・・・0.0017ミリ秒 → 2ミリ秒 (約1176倍) WSL・・・0.0017ミリ秒 → 25ミリ秒 (約14706倍) と大幅に速度が落ちる。シェルスクリプトが遅いと言われる原因の一つ
|

|