Cygwin + MinGW + GCC 相談室 Part 8 (987レス)
上下前次1-新
711: デフォルトの名無しさん [sage] 2020/05/03(日) 07:39:48.20 ID:HUz+EFHq(8/8) AAS
ちなみに俺のはCPUはi7な
Cygwin、MinGWを実行したら
それの2倍かかるはず
712(1): デフォルトの名無しさん [sage] 2020/05/03(日) 21:39:24.17 ID:ADBK+oPb(1) AAS
cygwinはforkがヘボいから遅い
MinGWといいつつmsysのbashやろ
これもforkがcygwinゆずりだから遅い。
wslもfork遅いと思うけど。
virtual boxにwindowsファイルを共有させたものの方が実は速い。
純粋にwindowsとLinuxの環境を同居させたきゃ仮想PC
Linuxでwindows binaryをクロスビルド、テストまでしたけりゃwsl
713: デフォルトの名無しさん [sage] 2020/05/03(日) 21:47:49.28 ID:v0W4oGhj(1) AAS
まあ名前解決のところと passwd/group の設定はしといた方がいいね
714: デフォルトの名無しさん [sage] 2020/05/03(日) 23:40:13.01 ID:sXSeyux8(1) AAS
>>712
forkが遅いのはわかってるけど、
このコードでforkなんて大量にはしないだろ?
time bash -c 'for i in {1..1000000}; do :; done'
715(4): デフォルトの名無しさん [] 2020/05/04(月) 02:27:10.75 ID:R/PLl+Gn(1/4) AAS
元々、bash が、ループ向きではないから、dash などを使う
for は遅いから、while などを使う。
実行時間中のほとんどが、フォークの時間
ループは、awk, perl, ruby などでは、0.1 秒も掛からない。
単一プロセス中の処理だから
716(1): デフォルトの名無しさん [sage] 2020/05/04(月) 03:06:12.15 ID:szliIti6(1/5) AAS
あ、dashの結果書くの忘れてた。dashは速いから数を10倍にしてる
傾向は一緒。ただのループなのに2倍ぐらいの差が出てしまう
WSL1
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m4.480s
user 0m2.875s
sys 0m2.047s
Cygwin
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m7.598s
user 0m6.531s
sys 0m1.296s
MinGW64
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m7.905s
user 0m6.905s
sys 0m1.155s
717: デフォルトの名無しさん [sage] 2020/05/04(月) 03:06:42.72 ID:szliIti6(2/5) AAS
>>715
どこでフォークしてるというの?
718: デフォルトの名無しさん [sage] 2020/05/04(月) 03:16:08.18 ID:szliIti6(3/5) AAS
awkは更に速いから、更に10倍にしてる。これなら理解できるな。
CygwinとMinGW64がWSL1より少し遅いのは起動時のパフォーマンスの差だろう
ってことはシェルスクリプトだと、なにか遅くなる処理をやってるってことか
整数型じゃないとか?
WSL1
$ time awk 'BEGIN{i=0;for(i=0;i<100000000;i++);}'
real 0m4.121s
user 0m4.109s
sys 0m0.016s
Cygwin
time awk 'BEGIN{i=0;for(i=0;i<100000000;i++);}'
real 0m4.978s
user 0m4.875s
sys 0m0.031s
MinGW64
$ time awk 'BEGIN{i=0;for(i=0;i<100000000;i++);}'
real 0m4.586s
user 0m4.562s
sys 0m0.015s
719: 715 [sage] 2020/05/04(月) 04:54:04.28 ID:R/PLl+Gn(2/4) AAS
for がコマンドだから、フォークされるのだろ。
だから、シェルスクリプトでは、while を使えと言われる
bash よりも、dash を使う。
それ以上は、awk, perl, ruby
720: デフォルトの名無しさん [sage] 2020/05/04(月) 05:14:01.45 ID:szliIti6(4/5) AAS
whileを使うと遅いからforに変えたのですが?
forを使った>>716とループ回数は同じ
WSL1
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m4.480s
user 0m2.875s
sys 0m2.047s
$ time dash -c 'i=0; while [ $i -lt 10000000 ]; do i=$((i+1)); done'
real 0m15.811s
user 0m15.766s
sys 0m0.016s
Cygwin
$ time dash -c 'for i in $(seq 10000000); do :; done'
real 0m7.598s
user 0m6.531s
sys 0m1.296s
$ time dash -c 'i=0; while [ $i -lt 10000000 ]; do i=$((i+1)); done'
real 0m26.173s
user 0m26.109s
sys 0m0.031s
MinGWはCygwinと大差ないので省略
721: 715 [sage] 2020/05/04(月) 07:28:52.02 ID:R/PLl+Gn(3/4) AAS
8年前のシェルスクリプトの本には、
10万行の処理で、
for : 9分
while : 5秒
awk/perl : 0.1秒
722(1): 715 [sage] 2020/05/04(月) 07:33:20.66 ID:R/PLl+Gn(4/4) AAS
$((i+1)) という部分が、コマンドだから遅いのだろう
ほとんどが、そのフォーク時間
723: デフォルトの名無しさん [sage] 2020/05/04(月) 07:37:26.49 ID:iIYyf/rd(1) AAS
せいぜいbashのサブコマンドで、forkしとらん気がする
ただマルチスレッドは使ってるかも知れんし、その際のメモリ操作はなんか性能の問題があった気はする
724: デフォルトの名無しさん [sage] 2020/05/04(月) 07:49:25.72 ID:szliIti6(5/5) AAS
>>722
コマンドじゃないよ
725: デフォルトの名無しさん [sage] 2020/05/04(月) 18:39:29.61 ID:EvcVp/Zr(1) AAS
$(())内でiを更新できることから分かるようにforkしていないし、少なくともbashとdashはシングルスレッド
linux上で
ltrace -f bash -c 'for i in {1..1000000}; do :; done'
したら、mallocを何度も呼んでいるようだから、ヒープ操作関係が遅い可能性はある
実際、linux上でもmallocの実装をglibcのからjemallocに切り替えたら上のループが2割近く速くなった
726: デフォルトの名無しさん [sage] 2020/05/06(水) 17:53:36.31 ID:cyb3WwF6(1) AAS
wsl2は仮想マシンになるのか
windowsバイナリ実行できるのかな
727(1): デフォルトの名無しさん [] 2020/05/06(水) 19:33:37.07 ID:DK8FW5YB(1) AAS
以下のパッケージ、入れようとすると対象が見つからないと出るんだけど・・・
dlfcn
libpng
tools-git
jq
clang
728: デフォルトの名無しさん [sage] 2020/05/06(水) 20:42:44.30 ID:Fjn1hDTG(1) AAS
WSL, Ubuntu 18.04 には、jq もあるけど
apt-cache show jq
メンテナー : 陳昌倬
729: デフォルトの名無しさん [sage] 2020/05/06(水) 22:45:14.75 ID:UqyV1t7H(1) AAS
>>727
ないんだろ?Cygwinは独自のディストリ
Windowsに移植できたもの、自分が関心があるパッケージしか
登録されていない
730: デフォルトの名無しさん [] 2020/05/11(月) 23:46:54.34 ID:77t5bXxM(1) AAS
GCC 10.1まだですか
731: デフォルトの名無しさん [sage] 2020/05/12(火) 00:26:10.57 ID:6XbzcR0E(1) AAS
ついにGCCのバージョンも10まできたか・・
732: デフォルトの名無しさん [sage] 2020/05/12(火) 01:18:10.18 ID:yS+J4vmz(1) AAS
GCCじゅにや
733: デフォルトの名無しさん [sage] 2020/05/12(火) 07:09:28.82 ID:zxRznJOz(1) AAS
カバにダンスをさせるのは
あまり楽しくないそうだ
734: デフォルトの名無しさん [sage] 2020/05/14(木) 00:17:24.56 ID:rBW8Yffw(1) AAS
MSYS2でWin32アプリ作ってみようとチャレンジ中
735: デフォルトの名無しさん [] 2020/05/14(木) 10:05:25.88 ID:tvxDWcUo(1/2) AAS
きばれ
tdm-gcc (64)
上下前次1-新書関写板覧索設栞歴
あと 252 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.026s