Cygwin + MinGW + GCC 相談室 Part 8 (988レス)
上下前次1-新
558(1): デフォルトの名無しさん [sage] 2019/08/24(土) 14:59:08.43 ID:H4K4vAej(1) AAS
 ただ単に -static -O3 -mtune=skylake を指定していないだけ 
 じゃねえだろうな? 
559(1): デフォルトの名無しさん [sage] 2019/08/24(土) 17:29:38.98 ID:Glqz8i+r(2/2) AAS
 staticオプションは特に指定しませんが…… 
 dllの読み込みが原因だとしたらstaticにすれば解決という話ですか 
 そういう発想はなかった 
  
 >>558 
 --mtune=skylakeってなんですか? 
560(1): デフォルトの名無しさん [] 2019/08/24(土) 17:48:35.57 ID:u2q8uNB0(2/2) AAS
 DLLよりstaticが速いとか都市伝説 
561(1): デフォルトの名無しさん [sage] 2019/08/25(日) 16:54:37.16 ID:z6AAmiat(1) AAS
 >>559 
 -O3はコードの最適化を3レベル(あるいはタイプ3)で行う 
 実際に何を行っているかはコンパイランの説明を読まないと分からない 
 -mtune=skylakeはコードをIntel CPUのSkyLakeアーキテクチャで最適な形にする 
 どちらも記述したコードを実行形式にするときに最適化を行うオプションなので、 
 非常に大きなコードを書いた際や似たような処理を繰り返すコードを書いている際に 
 指定すると早くなる事もある(ライブラリに含まれるコードは最適化されない) 
  
 >>560 
 都市伝説ってこともない 
  
 関数A、B、C、Dが含まれるライブラリlibhogeが存在する場合、自分のプログラムで 
 関数BとDだけを使っていると、ダイナミックリンクの場合自分のプログラムの実行 
 コードに加えてすべての関数が含まれるlibhoge.dll全体を読み込む必要がある 
 スタックリンクの場合には自分のプログラムの実行コードに加えてlibhoge.aから抽出した 
 関数BとDのコードを読み込むだけなので関数AとCのコードを読み込まない分ロードが 
 早くなる可能性は高くなる 
  
 ただし、実際問題としてはdllを一回読み込めばキャッシュからなくならない限り読み込む 
 必要がない+Windowsのプログラミングで使用するライブラリで基本的なものは通常 
 システムを起動した時点でキャッシュされていることに加えて、Windowsでプログラムを 
 動かすために必要な関数郡はかなりの量になる事が多いのでスタティックにリンクすると 
 すでにキャッシュされている関数郡を使わずに、必要な関数郡を含んだ大きなコードを 
 読み込む必要があるのでスタティックリンクの方が起動が遅くなるって本末転倒な事態が 
 発生することもある 
  
 MinGWの場合にはWindows一般では使わないライブラリを使用するので1回目の 
 起動時には必要なdllを読み込むよりは、必要な関数のみをリンクしたスタティックな 
 状態の方が早い場合があるかもってこと 
562: デフォルトの名無しさん [sage] 2019/08/25(日) 19:02:38.36 ID:7s5pz20M(1) AAS
 もっと短く 
563(1): デフォルトの名無しさん [sage] 2019/08/25(日) 23:51:01.48 ID:V1f8d4H1(1) AAS
 >>561 
 ということは--static -O3 -mtune=skylakeでビルドすれば起動が早くなるかもということですか 
 時間があるときに試したいと思いますm(_ _)m 
564: デフォルトの名無しさん [sage] 2019/08/26(月) 01:28:47.93 ID:K2zp8I6+(1) AAS
 やっぱり名前解決の問題が大きいんすよ 
 ライブラリの読み込みだけでは説明できない 
565(1): デフォルトの名無しさん [] 2019/08/26(月) 14:11:24.03 ID:T0vtMl8v(1/2) AAS
 >スタックリンクの場合には自分のプログラムの実行コードに加えてlibhoge.aから抽出した  
 >関数BとDのコードを読み込むだけなので関数AとCのコードを読み込まない分ロードが 
  
 これ関数単位でソース分けてあって 
 一関数が一objになってる場合だけだよな 
566(1): デフォルトの名無しさん [] 2019/08/26(月) 14:11:24.09 ID:T0vtMl8v(2/2) AAS
 >スタックリンクの場合には自分のプログラムの実行コードに加えてlibhoge.aから抽出した  
 >関数BとDのコードを読み込むだけなので関数AとCのコードを読み込まない分ロードが 
  
 これ関数単位でソース分けてあって 
 一関数が一objになってる場合だけだよな 
567: デフォルトの名無しさん [sage] 2019/08/26(月) 17:43:39.53 ID:eYWa871J(1) AAS
 dll読み込みってそんなに重いかな? 
 なんか別のところで時間がかかっていそうな感じ。 
568: デフォルトの名無しさん [sage] 2019/08/26(月) 21:44:29.54 ID:CEMf0Y7L(1) AAS
 >>565-566 
 MinGWの場合はそうかな。確かMinGWでは--gc-sectionsが効かなかったかと。 
 LTOで未使用関数が除去されるかもしれないけどバグが多いので試してない。 
569: デフォルトの名無しさん [sage] 2019/08/27(火) 05:30:30.81 ID:FSIINwco(1) AAS
 >>563 
 でビルドしてみました 
 様子見します 
 -O3は、前にビルドしたときにプログラムがうまく動作しないことがあったんですよね 
 -O0にすると正常に動作したんですけど 
570: デフォルトの名無しさん [] 2019/08/27(火) 09:41:49.02 ID:NZJyfwBK(1) AAS
 -O3に完璧を求める方が可笑しい 
571: デフォルトの名無しさん [sage] 2019/08/27(火) 11:08:45.95 ID:NDEdv6OD(1) AAS
 そこで-Ofastですよ 
572: デフォルトの名無しさん [sage] 2019/08/27(火) 12:32:02.21 ID:j4wzaSFP(1) AAS
 -O3と-O0で挙動が違うのは、不定の値を使っているとか、 
 未規定の動作に依存しているとか、そういう系だぞ 
  
 まれにコンパイラのバグということもあるが大抵てめーが悪い 
573: デフォルトの名無しさん [] 2019/08/28(水) 17:10:08.53 ID:w9RtsrXP(1) AAS
 VCで造られたdllをmingwのgccで使いたいです 
 hoge.dll と hoge.lib は有るのですが 
 libhoge.a がありません 
 あと hoge.c とかのソースファイルもありません 
 hoge.def は hoge.dll から作れるのですが 
 hoge.lib から libhoge.a を作るのはどうすればよかったか思い出せません 
574: デフォルトの名無しさん [] 2019/08/28(水) 17:25:07.66 ID:iAy2zRVx(1) AAS
 外部リンク:stackoverflow.com 
  
 dlltool.exe -m i386:x86-64 -d libhoge.def -D hoge.dll -l libhoge.a 
 dlltool.exe -m i386 -d libhoge.def -D hoge.dll -l libhoge.a 
  
 しらんけど 
575: デフォルトの名無しさん [sage] 2019/08/28(水) 17:45:16.06 ID:4qorfKL6(1) AAS
 実際parallelstlをコンパイルするのはVCの方が楽だしな 
 これを.aに変換したいと思っていたのでありがたいです 
576: デフォルトの名無しさん [sage] 2019/09/03(火) 16:24:26.27 ID:fy59PR5b(1) AAS
 9.2.0 Rev2 でPCHのエラーが出なくなった。 
577: デフォルトの名無しさん [] 2019/09/13(金) 12:46:20.65 ID:wKEqF87n(1/2) AAS
 本物のWInネイティブアプリの起動はもっと速いのかもしれません。 
 MinGW+MSYS2がCygwinより速い理由が釈然としませんが、 
 forkがCygwinのものまんまよりは多少軽量だったりするんだろうか 
 Twitterリンク:nullpo_head 
 Twitterリンク:5chan_nel (5ch newer account) 
578: デフォルトの名無しさん [] 2019/09/13(金) 12:48:07.35 ID:wKEqF87n(2/2) AAS
 ビルド環境のまとめ 
 画像リンク
 
 外部リンク[html]:i.loveruby.net 
579: デフォルトの名無しさん [sage] 2019/09/13(金) 13:01:11.82 ID:hxTRiT39(1) AAS
 mingwはその本物のネイティブとちゃうか 
580: デフォルトの名無しさん [] 2019/09/13(金) 15:13:51.93 ID:ud7Tmahn(1) AAS
 cygwin の fork = native じゃなくて emu 
 mingw の fork = あるんか? 
581(1): デフォルトの名無しさん [sage] 2019/09/13(金) 16:40:00.05 ID:08rV0d8/(1) AAS
 MinGW+MSYS2がCygwinより速い理由は 
 Cygwinはたとえ遅くなろうとも完璧なエミュレートを目指してるのに対して 
 MinGW+MSYS2は目指してないから 
582: デフォルトの名無しさん [sage] 2019/09/13(金) 18:56:41.57 ID:2jKM3FP9(1) AAS
 MSYS2は、Windowsネイティブアプリを作るための環境です。 
 Windowsネイティブアプリを作りましょう。 
上下前次1-新書関写板覧索設栞歴
あと 406 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s