C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part143
https://mevius.5ch.net/test/read.cgi/tech/1560574313/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
C++相談室 part144
■ このスレッドは過去ログ倉庫に格納されています
2019/07/22(月) 13:18:35.52ID:gptRHpgT
561デフォルトの名無しさん
2019/08/20(火) 13:11:19.02ID:20EaQULd 高速化って言ったら、やっぱりよく使う変数をレジスタに割り当てることが大事だよな
メンバ変数は毎回メモリとやり取りするので遅くなるから
ループ外で自動変数に読み込んでから使うとビックリするぐらい速くなったよ
メンバ変数は毎回メモリとやり取りするので遅くなるから
ループ外で自動変数に読み込んでから使うとビックリするぐらい速くなったよ
562デフォルトの名無しさん
2019/08/20(火) 13:24:48.11ID:dsMJquaY (いつの時代の話だろう?)
563デフォルトの名無しさん
2019/08/20(火) 13:45:22.85ID:JO8kTZu8 (コンパイラを作っているのだろう)
564520
2019/08/20(火) 13:57:22.86ID:vf53Ia55 (日記はチラウラに)
565デフォルトの名無しさん
2019/08/20(火) 14:07:45.10ID:hCU5dYnH (>>562-564
こいつらの自信はどっから来てるんだろう)
こいつらの自信はどっから来てるんだろう)
566デフォルトの名無しさん
2019/08/20(火) 14:18:58.77ID:Ic3/d448 (むしろ自信なんてどこから出てきたんだ…)
567デフォルトの名無しさん
2019/08/20(火) 14:29:19.64ID:aHZAynoR よくあるような、
if ( (c >= 'A' && code <='Z') || (c >= 'a' && code <='z') ||
c == '_' ) {
・・・
}
の部分を、条件jmp文が少しでも少なくなるようにと思って、
予め作成しておいたテーブル(配列)を使って、
if ( eiji_or_underscore[c] != 0 ) {
・・・
}
として実測してみたところ、何度計測しても後者の方が遅くなった。
アセンブリコードを見てみても、前者だと5つの条件jmp命令、後者だと1つの条件jmp命令と、
後者の方が命令数が少なくっていた。しかし、前者だと、レジスタとcmp命令を使っていたが、
後者だとグローバル変数の配列を読み出しに行っていた。
最近のCPUは非常に複雑で高度な「分岐予測」をしていて、配列は読み出してみないと
値が分からないので、「予測」ができず、分岐予測の「予測間違い」がおきるが、
レジスタをcmpで比較する場合には予測が出来るためだろうか。
しかし、昔より最適化する際にどっちが高速になるかの予想が難しくなってしまってる。
if ( (c >= 'A' && code <='Z') || (c >= 'a' && code <='z') ||
c == '_' ) {
・・・
}
の部分を、条件jmp文が少しでも少なくなるようにと思って、
予め作成しておいたテーブル(配列)を使って、
if ( eiji_or_underscore[c] != 0 ) {
・・・
}
として実測してみたところ、何度計測しても後者の方が遅くなった。
アセンブリコードを見てみても、前者だと5つの条件jmp命令、後者だと1つの条件jmp命令と、
後者の方が命令数が少なくっていた。しかし、前者だと、レジスタとcmp命令を使っていたが、
後者だとグローバル変数の配列を読み出しに行っていた。
最近のCPUは非常に複雑で高度な「分岐予測」をしていて、配列は読み出してみないと
値が分からないので、「予測」ができず、分岐予測の「予測間違い」がおきるが、
レジスタをcmpで比較する場合には予測が出来るためだろうか。
しかし、昔より最適化する際にどっちが高速になるかの予想が難しくなってしまってる。
568デフォルトの名無しさん
2019/08/20(火) 14:39:39.94ID:aHZAynoR >>567
誤:if ( (c >= 'A' && code <='Z') || (c >= 'a' && code <='z') ||
正:if ( (c >= 'A' && c <='Z') || (c >= 'a' && c <='z') ||
誤:if ( (c >= 'A' && code <='Z') || (c >= 'a' && code <='z') ||
正:if ( (c >= 'A' && c <='Z') || (c >= 'a' && c <='z') ||
569デフォルトの名無しさん
2019/08/20(火) 14:40:33.96ID:hCU5dYnH 分岐予測はデータの内容関係ないやろ
570デフォルトの名無しさん
2019/08/20(火) 14:48:01.70ID:lOKfo+mN 最近の環境では「実測」の信頼性確保も、また難しいです。
なぜかある時には何度測定しても遅いのに、あらためて別の時に
測ると速く出る事があったりします。
なぜかある時には何度測定しても遅いのに、あらためて別の時に
測ると速く出る事があったりします。
571デフォルトの名無しさん
2019/08/20(火) 14:48:40.12ID:vf53Ia55 単にテーブル参照はメモリーから読み出すから遅いだけだろ
572デフォルトの名無しさん
2019/08/20(火) 14:49:27.63ID:20EaQULd 俺が書いた通り、単にメモリへのアクセスが遅いんだよ
573デフォルトの名無しさん
2019/08/20(火) 15:08:33.40ID:aHZAynoR 理論上は、メモリがキャッシュに乗っている限り、メモリの読み書きとレジスタ
への読み書きの速度は同一です。
ただし、メモリとメモリは add, sub, mov 命令で2つのオペランドに同時指定は
出来ないのに対し、レジスタは出来るので、確率的にレジスタの方が必要な
命令数が少なくて済むので高速になる場合があります。
あとキャッシュに乗って無い場合はメモリは遅くなります。
への読み書きの速度は同一です。
ただし、メモリとメモリは add, sub, mov 命令で2つのオペランドに同時指定は
出来ないのに対し、レジスタは出来るので、確率的にレジスタの方が必要な
命令数が少なくて済むので高速になる場合があります。
あとキャッシュに乗って無い場合はメモリは遅くなります。
574デフォルトの名無しさん
2019/08/20(火) 15:22:22.32ID:hCU5dYnH575デフォルトの名無しさん
2019/08/20(火) 15:23:45.52ID:hCU5dYnH あ、すまん俺の方が間違えてた・・
まさかとは思うけど最適化してないとか無いよね
まさかとは思うけど最適化してないとか無いよね
576デフォルトの名無しさん
2019/08/20(火) 15:29:52.16ID:lOKfo+mN >>575
最適化はどちらも同じオプションでしてますし、出力されたアセンブリ・コード
も見て、テーブルを使った方が命令数の少ないコードになっていることも
確認してます。条件jmp命令も少なくなっています。
最適化はどちらも同じオプションでしてますし、出力されたアセンブリ・コード
も見て、テーブルを使った方が命令数の少ないコードになっていることも
確認してます。条件jmp命令も少なくなっています。
577デフォルトの名無しさん
2019/08/20(火) 15:30:02.90ID:hCU5dYnH あと前者のコードは与えたcの値がA-Zだと分岐の回数2回で済むからじゃないかね
578デフォルトの名無しさん
2019/08/20(火) 15:36:01.76ID:aHZAynoR >>577
実はその影響もあると思っているのですが、それだけだと前者の場合には、
命令数から言えば1〜2クロックほど速くなる場合がある程度です。
しかし、実測してみると、後者のやり方の方がもっと遅くなっている
ようなんです。
面倒ですが、マクロスイッチでコードを切り替えられるようにして
短時間の内に二つを切り替えて速度比較してみようかと思っているところです。
実はその影響もあると思っているのですが、それだけだと前者の場合には、
命令数から言えば1〜2クロックほど速くなる場合がある程度です。
しかし、実測してみると、後者のやり方の方がもっと遅くなっている
ようなんです。
面倒ですが、マクロスイッチでコードを切り替えられるようにして
短時間の内に二つを切り替えて速度比較してみようかと思っているところです。
579デフォルトの名無しさん
2019/08/20(火) 15:51:20.21ID:lOKfo+mN 最近のCPUは温度によってクロック数が変動する可能性もあるそうですね。
580デフォルトの名無しさん
2019/08/20(火) 16:13:18.12ID:hCU5dYnH テーブルがキャッシュに乗ってなかったり、
>>561と同じでテーブルがグローバル変数だと書き換えを懸念して最適化ぎ抑制されてんじゃないかな
>>561と同じでテーブルがグローバル変数だと書き換えを懸念して最適化ぎ抑制されてんじゃないかな
581デフォルトの名無しさん
2019/08/20(火) 16:16:16.40ID:JJ0cBhAp レンジエラーになりそうで怖い。っていう横やり。
582デフォルトの名無しさん
2019/08/20(火) 16:23:55.23ID:lOKfo+mN マクロスイッチ切り替え方式にして、ほぼ同時に両方を測定してみたら、
テーブル方式の方が速くなっていました。
テーブル方式の方が速くなっていました。
583デフォルトの名無しさん
2019/08/20(火) 16:32:21.29ID:JJ0cBhAp キャッシュ汚染とかの話になったの?
584デフォルトの名無しさん
2019/08/20(火) 17:25:38.94ID:lOKfo+mN >>580
アセンブリコードを見る限り、特に問題なく、人間が単純に書いた場合
と似たようなコードになっています。
ただし、一点、テーブルの c 番目の要素を参照する際、バイト整数の c
をゼロ拡張して32BIT 整数にする必要があるのですが、自分の使ってるVC++
だと、movzx 命令を使わずに、xor eax,eax; mov al,cl のように2命令
を使ってしまっている点が、人間が最適化するより遅いコードになってしまって
います。
アセンブリコードを見る限り、特に問題なく、人間が単純に書いた場合
と似たようなコードになっています。
ただし、一点、テーブルの c 番目の要素を参照する際、バイト整数の c
をゼロ拡張して32BIT 整数にする必要があるのですが、自分の使ってるVC++
だと、movzx 命令を使わずに、xor eax,eax; mov al,cl のように2命令
を使ってしまっている点が、人間が最適化するより遅いコードになってしまって
います。
585554
2019/08/20(火) 18:34:23.13ID:4t2XBONQ コメントありがとうございます。
>>555
エンディアンを気にしないといけないのは後々分かりづらくなりそうですね。。
memcmpというのがあったんですね。
連続バイト比較ができてシンプルで良さそうです。
これを使ってみます。
>>555
エンディアンを気にしないといけないのは後々分かりづらくなりそうですね。。
memcmpというのがあったんですね。
連続バイト比較ができてシンプルで良さそうです。
これを使ってみます。
586デフォルトの名無しさん
2019/08/20(火) 19:55:32.24ID:otgnf5aI volatile命令の他にキャッシュ命令とか無いのかよ
ルックアップテーブルをキャッシュに載せときゃ爆速じゃん
もっと言えばテーブルを石に焼いた時一番早い
ルックアップテーブルをキャッシュに載せときゃ爆速じゃん
もっと言えばテーブルを石に焼いた時一番早い
587デフォルトの名無しさん
2019/08/20(火) 22:55:27.89ID:C94+kmpU588デフォルトの名無しさん
2019/08/20(火) 23:22:44.05ID:hCU5dYnH589デフォルトの名無しさん
2019/08/21(水) 01:15:10.83ID:X4j3osk/ 多分メモリが読めてない状態でも分岐予測して投機的実行はするんじゃないかな
近代的なCPUは
近代的なCPUは
590デフォルトの名無しさん
2019/08/21(水) 05:42:53.52ID:Vc3YPkYv >>567の前半部のコード
>if ( (c >= 'A' && code <='Z') || (c >= 'a' && code <='z') ||
> c == '_' ) {
> ・・・
>}
はCPUレベルの分岐予測+投機的実行では入力データによっては速度向上し難いケースがある
AaZz_AaZz_AaZz_....
という入力を考えたらワカル(cといして1文字入力される度に||か&&を打ち切る分岐箇所がちがーう
分岐予測キャッシュというのは分岐命令1個につき1状態か2状態記憶がせいぜい(しかもLRU式に記憶が消える
のでこのような場合は投機的実行結果が捨てられ続けかねない
>>598
ハイ論破
>>589
分岐予測と投機的実行が効力を発揮するのは多重ループで内側の分岐条件が大部分の時間変わらないというケース
>if ( (c >= 'A' && code <='Z') || (c >= 'a' && code <='z') ||
> c == '_' ) {
> ・・・
>}
はCPUレベルの分岐予測+投機的実行では入力データによっては速度向上し難いケースがある
AaZz_AaZz_AaZz_....
という入力を考えたらワカル(cといして1文字入力される度に||か&&を打ち切る分岐箇所がちがーう
分岐予測キャッシュというのは分岐命令1個につき1状態か2状態記憶がせいぜい(しかもLRU式に記憶が消える
のでこのような場合は投機的実行結果が捨てられ続けかねない
>>598
ハイ論破
>>589
分岐予測と投機的実行が効力を発揮するのは多重ループで内側の分岐条件が大部分の時間変わらないというケース
591デフォルトの名無しさん
2019/08/21(水) 05:59:08.65ID:Vc3YPkYv ちゅか&&や||の条件式に関数呼び出しが含まれない単純なケースにおいては、
OoOと分岐予測を備えた今日日のCPUでは途中で打ち切るより全部評価してしまった砲が速い可能性がおおきい
このとき問題になるのは副作用のある式が問題であり、
副作用がある++や--があると、やっぱ言語規格どおり||や&&は条件成立で打ち切らないとソースコードに書かれた気体動作と
オブジェクトコードの動作が別物になってしまうので諸悪の根源
C言語を引きずった仕様のままでは時代について逝けてない
Rustで++や--を式の中で使えないのは故無きことでは無いんじゃ…
OoOと分岐予測を備えた今日日のCPUでは途中で打ち切るより全部評価してしまった砲が速い可能性がおおきい
このとき問題になるのは副作用のある式が問題であり、
副作用がある++や--があると、やっぱ言語規格どおり||や&&は条件成立で打ち切らないとソースコードに書かれた気体動作と
オブジェクトコードの動作が別物になってしまうので諸悪の根源
C言語を引きずった仕様のままでは時代について逝けてない
Rustで++や--を式の中で使えないのは故無きことでは無いんじゃ…
592デフォルトの名無しさん
2019/08/21(水) 06:00:45.09ID:Vc3YPkYv スマンGoと混同した
Rustに++や--は無い
Rustに++や--は無い
593デフォルトの名無しさん
2019/08/21(水) 06:13:21.67ID:UK/6EOKQ もうRustはいいから
594デフォルトの名無しさん
2019/08/21(水) 07:20:20.39ID:6njIT3pF >>590
> (しかもLRU式に記憶が消える
知ったか乙
せめて
https://ja.m.wikipedia.org/wiki/分岐予測
くらいは読んでこい
> のでこのような場合は投機的実行結果が捨てられ続けかねない
そりゃ頑張って作れば最悪の状況は作れるよw
だから何?って話だが
> (しかもLRU式に記憶が消える
知ったか乙
せめて
https://ja.m.wikipedia.org/wiki/分岐予測
くらいは読んでこい
> のでこのような場合は投機的実行結果が捨てられ続けかねない
そりゃ頑張って作れば最悪の状況は作れるよw
だから何?って話だが
595デフォルトの名無しさん
2019/08/21(水) 10:08:42.06ID:yoKe7uXb596デフォルトの名無しさん
2019/08/21(水) 20:40:17.99ID:fYY/XStv597デフォルトの名無しさん
2019/08/21(水) 22:54:56.30ID:Vc3YPkYv598デフォルトの名無しさん
2019/08/21(水) 23:02:56.86ID:Vc3YPkYv もし分岐予測制度を上げるためのキャッシュエントリのn状態化とキャッシュが溢れた場合の話を
混同しているんだとしたらきわめておめでたい話だといえる
あるアドレスの分岐命令に対応するキャッシュエントリがどの状態に居たとしても、
そんあことはお構いなしに溢れたときはどれかのエントリが消される.。
このとき他の制約が無ければ理想解はLRUという話
混同しているんだとしたらきわめておめでたい話だといえる
あるアドレスの分岐命令に対応するキャッシュエントリがどの状態に居たとしても、
そんあことはお構いなしに溢れたときはどれかのエントリが消される.。
このとき他の制約が無ければ理想解はLRUという話
599デフォルトの名無しさん
2019/08/21(水) 23:16:22.08ID:Vc3YPkYv600デフォルトの名無しさん
2019/08/21(水) 23:18:51.67ID:yoKe7uXb ただのこじつけじゃねーか
てかそんだけ御託並べて質問者へのアドバイスはゼロかw
(というかこいつの論調どっかで見たな・・・)
てかそんだけ御託並べて質問者へのアドバイスはゼロかw
(というかこいつの論調どっかで見たな・・・)
601デフォルトの名無しさん
2019/08/22(木) 00:05:50.83ID:F37ex36A602デフォルトの名無しさん
2019/08/22(木) 10:59:48.20ID:36M5lMYO いや、まてまて、そもそも今の話は、分岐予測の精度は関係無いのでは?
>「配列は読み出してみないと値がわからないので、予測が出来ず」
がおかしいって話でしょ
精度はともかく、分岐予測はするでしょ
というか、逆に、値が分からないから分岐予測するようなもので
分岐予測の精度に関しても、if文のかっこの中の計算が終わってない状態で
適当にジャンプするのは同じでしょ、配列が読めてようが読めてなかろうが
>「配列は読み出してみないと値がわからないので、予測が出来ず」
がおかしいって話でしょ
精度はともかく、分岐予測はするでしょ
というか、逆に、値が分からないから分岐予測するようなもので
分岐予測の精度に関しても、if文のかっこの中の計算が終わってない状態で
適当にジャンプするのは同じでしょ、配列が読めてようが読めてなかろうが
603デフォルトの名無しさん
2019/08/22(木) 11:58:47.76ID:Vlc++9B2 そりゃー予測なんかせず配列まるまる全部をキャッシュに乗せるから早いんだろ
つまり予測しないルックアップテーブルの時が一番早い
そのテーブルがCPUに焼きこんであればもっと早い
つまり予測しないルックアップテーブルの時が一番早い
そのテーブルがCPUに焼きこんであればもっと早い
604デフォルトの名無しさん
2019/08/22(木) 13:09:16.96ID:36M5lMYO いやだから、ルックアップテーブルの結果を受けて分岐する話なんだから・・
おかしなこと言うな
おかしなこと言うな
605デフォルトの名無しさん
2019/08/22(木) 14:18:30.45ID:Ubta0nDz イキってるパソコンの大先生の子供部屋おじさんがいますね…
606デフォルトの名無しさん
2019/08/22(木) 15:51:21.48ID:eMNxtHht 多くのCコンパイラがサポートしてるquadmath (__int128とか__float128とかその関数)がかなり便利なのですが、なぜこれはC++の標準の機能にならなかったのですか?
607デフォルトの名無しさん
2019/08/22(木) 18:02:39.65ID:/5icwwgo 殆んどのハードでの実装がソフトで遅いし、需要も少ない
使いたきゃboostにあるし
標準化されるとしたら、x86とかでハード実装された後に標準型として対応するんじゃね?
てかlong doubleがワケわからんことになっているのをどうにかしろと
使いたきゃboostにあるし
標準化されるとしたら、x86とかでハード実装された後に標準型として対応するんじゃね?
てかlong doubleがワケわからんことになっているのをどうにかしろと
608デフォルトの名無しさん
2019/08/22(木) 18:28:45.94ID:6PHJNtSf 'A' から 'Z と 'a'から'z' は連続した文字コードである
ここにcpuの速度の秘密がある はず
ここにcpuの速度の秘密がある はず
609デフォルトの名無しさん
2019/08/22(木) 19:44:40.23ID:/1dDo18x610デフォルトの名無しさん
2019/08/22(木) 20:52:16.00ID:KKaRKvsP611デフォルトの名無しさん
2019/08/22(木) 20:56:48.17ID:NZc4hO3L >>606
ところで、そんな精度を何に使ってるの?
ところで、そんな精度を何に使ってるの?
612デフォルトの名無しさん
2019/08/22(木) 20:59:38.41ID:2HKFvfoP float128よりdecimal64の方が需要あるんじゃね
613デフォルトの名無しさん
2019/08/22(木) 21:59:41.74ID:AFh1DZYh614デフォルトの名無しさん
2019/08/22(木) 22:01:20.66ID:ufMqk9YS そこでCOBOLですよ
615デフォルトの名無しさん
2019/08/22(木) 22:10:35.40ID:AFh1DZYh KaMiの言語・コボル かー。
読めんわ!!!
読めんわ!!!
616蟻人間 ◆T6xkBnTXz7B0
2019/08/22(木) 22:26:31.30ID:QnESaaq9617デフォルトの名無しさん
2019/08/22(木) 22:29:56.92ID:AFh1DZYh618デフォルトの名無しさん
2019/08/22(木) 22:53:17.49ID:MZ7gjtS4 二進化十進数でも誤差でるから
当たり前だけど
有理数でやるんだよ
当たり前だけど
有理数でやるんだよ
619デフォルトの名無しさん
2019/08/22(木) 22:59:39.88ID:ywV62E2Z そういう話じゃない。
金融計算では10進数のどの桁でどういう丸めを行うか決まっているから、
その通りの結果になることが「誤差がない」状態なんだよ。
金融計算では10進数のどの桁でどういう丸めを行うか決まっているから、
その通りの結果になることが「誤差がない」状態なんだよ。
620デフォルトの名無しさん
2019/08/22(木) 23:13:26.11ID:4VSp96xm 普通そういうのは多倍長整数じゃないのか
621デフォルトの名無しさん
2019/08/23(金) 00:16:10.19ID:/B94cENN >>611
畳み込み和の計算はフーリエ変換して求めておいて最後に逆変換することで高速化できます (畳み込み定理) が、しばしば誤差の増大がネックになります
こういう問題で出てくる整数はとても大きいということもあります
だから巨大な数を普通に扱いたいのです
数論変換 (整数環上でのDFT) をすれば良いのですが、もっと単純化できないかという試行錯誤です
畳み込み和の計算はフーリエ変換して求めておいて最後に逆変換することで高速化できます (畳み込み定理) が、しばしば誤差の増大がネックになります
こういう問題で出てくる整数はとても大きいということもあります
だから巨大な数を普通に扱いたいのです
数論変換 (整数環上でのDFT) をすれば良いのですが、もっと単純化できないかという試行錯誤です
622デフォルトの名無しさん
2019/08/23(金) 00:39:49.78ID:CmTDylN7 蒸し返すようですいませんがGNU Makeに取って代わるデファクトスタンダードなビルドシステムってCMakeじゃないんですかね
623デフォルトの名無しさん
2019/08/23(金) 02:34:27.19ID:5WDa9rK8 >>608
規格で保証されてるのは'0'から'9'が連続してることだけな
規格で保証されてるのは'0'から'9'が連続してることだけな
624デフォルトの名無しさん
2019/08/23(金) 21:07:50.69ID:1CEPBqe0 >>624
そういうのは windows 用と linux 用にわけるんじゃないでしょうか?
そういうのは windows 用と linux 用にわけるんじゃないでしょうか?
626デフォルトの名無しさん
2019/08/23(金) 21:30:32.32ID:9XBmxzHo CMakeもAutoconfなんかと比べたら簡単になったんだろうけど、自分で書くならgypだな。
627デフォルトの名無しさん
2019/08/23(金) 21:42:53.01ID:CGqYEl83628デフォルトの名無しさん
2019/08/23(金) 23:17:25.97ID:0H/lDr6k 馬鹿朝鮮人が使ってるわけないだろ
629デフォルトの名無しさん
2019/08/23(金) 23:21:07.68ID:LHN2h0YB automake/autoconfに慣れたからcmakeいらんわ
うまくクロス環境みつけてくれないこと多いし
うまくクロス環境みつけてくれないこと多いし
630デフォルトの名無しさん
2019/08/24(土) 09:02:17.39ID:u6taJwr5 >>625
cmakeとかautomake系のツールのコンセプトはできるだけ分けないで書けるように
ってところではあるが、まあ実際はそれぞれの環境用に色々やるのと大して変わらん。
少なくともデバッグするときはその環境毎のビルドがわかってないとほぼ詰むし。
なんだかんだでまずlinux系統でmakeになれるのが近道だとは思うけどね。
あれでヘッダー依存の取り扱いがしっかり書けるようになれば大抵のビルドシステムにも慣れるだろう。
cmakeとかautomake系のツールのコンセプトはできるだけ分けないで書けるように
ってところではあるが、まあ実際はそれぞれの環境用に色々やるのと大して変わらん。
少なくともデバッグするときはその環境毎のビルドがわかってないとほぼ詰むし。
なんだかんだでまずlinux系統でmakeになれるのが近道だとは思うけどね。
あれでヘッダー依存の取り扱いがしっかり書けるようになれば大抵のビルドシステムにも慣れるだろう。
631デフォルトの名無しさん
2019/08/24(土) 09:18:12.19ID:+PLwcW2w 最終的にクロスプラットフォームでちゃんとやれることを目指すならmakeもmsbuildも
両方押さえておかなければならないわけで、どっちが先ってことはないと思うがな。
両方押さえておかなければならないわけで、どっちが先ってことはないと思うがな。
632デフォルトの名無しさん
2019/08/24(土) 20:42:19.22ID:u6taJwr5 makeのが圧倒的に情報調べるのが楽だろ。
633デフォルトの名無しさん
2019/08/24(土) 21:18:36.57ID:Dnv6GXtW WSLが一般的になったら苦労は減るのだろうか
634デフォルトの名無しさん
2019/08/24(土) 22:40:38.50ID:+PLwcW2w635デフォルトの名無しさん
2019/08/25(日) 12:27:30.33ID:haXU+hCF makeじゃなくてmsbuild教える方がいいと思うならお前はそうしろ。
それが本当にいいと思ってんならな。
俺だったらmakeを教えるというだけの話だ。
それが本当にいいと思ってんならな。
俺だったらmakeを教えるというだけの話だ。
636デフォルトの名無しさん
2019/08/25(日) 14:08:01.24ID:Nf3A65/V また支離滅裂なw
makeとmsbuildの優劣なんて話はしてないんだが、日本語不自由なのか?
>少なくともデバッグするときはその環境毎のビルドがわかってないとほぼ詰むし。
という理由でmakeを覚えなければならないと主張するなら、同じ理由でwindows環境向けには
msbuildを覚えておかなければ片手落ちだろうと指摘しただけ。
まぁどうせ上の理由も後付けで、cmakeを知らない爺が横からmakeを布教しようとしただけなんだろうが。
makeとmsbuildの優劣なんて話はしてないんだが、日本語不自由なのか?
>少なくともデバッグするときはその環境毎のビルドがわかってないとほぼ詰むし。
という理由でmakeを覚えなければならないと主張するなら、同じ理由でwindows環境向けには
msbuildを覚えておかなければ片手落ちだろうと指摘しただけ。
まぁどうせ上の理由も後付けで、cmakeを知らない爺が横からmakeを布教しようとしただけなんだろうが。
637デフォルトの名無しさん
2019/08/25(日) 15:35:39.92ID:qzIUG/z9 makeの罠の多さは異常
絶対手で触りたくない
絶対手で触りたくない
638デフォルトの名無しさん
2019/08/25(日) 15:51:39.75ID:hTkFprTS 手で触るもんじゃないけど
一度手で触っておかないと吐き出されたmakefileを見て何がおかしいか理解できない
一度手で触っておかないと吐き出されたmakefileを見て何がおかしいか理解できない
639デフォルトの名無しさん
2019/08/26(月) 11:17:55.70ID:mep62E1y std::condition_variableを使って複数のスレッドが待ち状態の時、
notify_oneで一つだけスレッドロック解除した場合、解除されるスレッドに優先度はある?
例えば、一番最初に待ち状態に入ったスレッドのロックが解除されるとか。
それとも完全に実装依存?
notify_oneで一つだけスレッドロック解除した場合、解除されるスレッドに優先度はある?
例えば、一番最初に待ち状態に入ったスレッドのロックが解除されるとか。
それとも完全に実装依存?
640デフォルトの名無しさん
2019/08/26(月) 16:25:41.54ID:yDrui9+d notify_one使ったことないけど解説読む限り実装依存に見える(待機中のスレッドからいずれか一つ、とかあるし)
順序あるならそう書かれると思う
曖昧ですまんけど
順序あるならそう書かれると思う
曖昧ですまんけど
641デフォルトの名無しさん
2019/08/26(月) 19:23:22.50ID:mB+f+FeE 実装定義だと思うけど、wait呼び出した順だと考えていいと思う
642デフォルトの名無しさん
2019/08/26(月) 20:31:47.24ID:bJVhcqWX 俺は多分カーネルのスレッドのスケジューリングで
たまたま選ばれたやつが走ると思う
しらんけど
たまたま選ばれたやつが走ると思う
しらんけど
643デフォルトの名無しさん
2019/08/26(月) 22:58:04.80ID:ZsUTwn4r 流れ読まずに申し訳ございません、質問させてください。
非エンジニアのものなのですが、下記のようなオープンソースのコードを使って
メッセージのウェブアプリケーションを創ってみたいのですが、
一番手っ取り早い方法はどういう方法でしょうか?
漠然とした質問で申し訳ございません
▶Telegram
https://telegram.org/apps#source-code
▶Signal
https://github.com/signalapp
▶Rocket Chat
https://github.com/RocketChat/Rocket.Chat
▶Tox
https://github.com/Tox/tox.chat
▶Wire
https://github.com/wireapp/wire
非エンジニアのものなのですが、下記のようなオープンソースのコードを使って
メッセージのウェブアプリケーションを創ってみたいのですが、
一番手っ取り早い方法はどういう方法でしょうか?
漠然とした質問で申し訳ございません
▶Telegram
https://telegram.org/apps#source-code
▶Signal
https://github.com/signalapp
▶Rocket Chat
https://github.com/RocketChat/Rocket.Chat
▶Tox
https://github.com/Tox/tox.chat
▶Wire
https://github.com/wireapp/wire
644デフォルトの名無しさん
2019/08/26(月) 23:04:19.65ID:l3oC4Mh5 金で解決
645デフォルトの名無しさん
2019/08/26(月) 23:21:58.15ID:h9DDya56 >>636
お前ほんとにmsbuildいじったことあるのか?
あんなクソなものを本気で使ってんの?
てかヘッダ依存解決くらい書けなきゃまともなビルドシステムなんて絶対組めねーよ。
こういう誤誘導を平気でするやつってどういう神経してんだろうな。。
お前ほんとにmsbuildいじったことあるのか?
あんなクソなものを本気で使ってんの?
てかヘッダ依存解決くらい書けなきゃまともなビルドシステムなんて絶対組めねーよ。
こういう誤誘導を平気でするやつってどういう神経してんだろうな。。
646さまよえる蟻人間 ◆T6xkBnTXz7B0
2019/08/26(月) 23:25:34.58ID:doK8kIo2 >>643
ウェブアプリなのにC++スレで質問するの? 根本的に間違ってるんじゃない?
ウェブアプリなのにC++スレで質問するの? 根本的に間違ってるんじゃない?
647デフォルトの名無しさん
2019/08/27(火) 00:16:27.36ID:tgTbqYO8 最近C++を学び始めたのですが、
テンプレート引数の型をコンパイル時に文字列に変換する方法ってあるのでしょうか?
できればテンプレートの特殊化やプリプロセス命令を使わずに以下の用な感じでかければよいのですが
template<typename Type>
class Hoge
{
public:
static constexpr char* Text = Typeを文字列に変換して納入したい
};
テンプレート引数の型をコンパイル時に文字列に変換する方法ってあるのでしょうか?
できればテンプレートの特殊化やプリプロセス命令を使わずに以下の用な感じでかければよいのですが
template<typename Type>
class Hoge
{
public:
static constexpr char* Text = Typeを文字列に変換して納入したい
};
648デフォルトの名無しさん
2019/08/27(火) 00:31:42.36ID:EWBBAhUG 無理ゲー
あくまで自動にこだわるならtypeid使え。
自作クラスだけならクラス名を名乗るメンバ関数でも作っとけ
あくまで自動にこだわるならtypeid使え。
自作クラスだけならクラス名を名乗るメンバ関数でも作っとけ
649デフォルトの名無しさん
2019/08/27(火) 01:14:06.25ID:tTk1EYER650デフォルトの名無しさん
2019/08/27(火) 08:26:10.70ID:CO6EoWnq >てかヘッダ依存解決くらい書けなきゃまともなビルドシステムなんて絶対組めねーよ。
いつの時代から来たんだよw
ソースに #include 書く度にいちいちMakefile書き換えんのか?
いつの時代から来たんだよw
ソースに #include 書く度にいちいちMakefile書き換えんのか?
651デフォルトの名無しさん
2019/08/27(火) 08:40:44.27ID:l579ej24 >>646
初心者狩りしてるこいつ一人ww
初心者狩りしてるこいつ一人ww
652デフォルトの名無しさん
2019/08/27(火) 17:31:34.79ID:icKeAJ7/653デフォルトの名無しさん
2019/08/27(火) 18:46:31.35ID:idJxRw9J 別にウェブだからって既存のブラウザ上で動くものという定義はあるまい
サーバーサイドもクライアントサイドも両方C++で作ればいい
そもそもブラウザだってC++で作られているんだから
サーバーサイドもクライアントサイドも両方C++で作ればいい
そもそもブラウザだってC++で作られているんだから
654デフォルトの名無しさん
2019/08/27(火) 19:25:57.30ID:JlFv53u2 >>653
両方自分で作るならもっとシンプルなプロトコルでやるよ
両方自分で作るならもっとシンプルなプロトコルでやるよ
655デフォルトの名無しさん
2019/08/27(火) 21:20:18.36ID:FzNWLyW5 typeidってPFで戻ってくる値が違うからテスト書くとき気をつけるん
656デフォルトの名無しさん
2019/08/28(水) 08:42:46.33ID:4Zzob7TG >>650
書き換えなくていいように書けるようにするってことだよバカ。
てか依存をしっかり見るって意味じゃヘッダを意識するってのは
相当大事なんだがな。
タスク管理を意識した場合、どんなレイヤーで仕事する場合でも重要になる。
書き換えなくていいように書けるようにするってことだよバカ。
てか依存をしっかり見るって意味じゃヘッダを意識するってのは
相当大事なんだがな。
タスク管理を意識した場合、どんなレイヤーで仕事する場合でも重要になる。
657デフォルトの名無しさん
2019/08/28(水) 08:50:01.49ID:4Zzob7TG てか想像以上にビルド周りの技術ってc+11から入った輩は理解してないのな。。
またクソシステムの再生産が10年単位で続きそうだわ。。
またクソシステムの再生産が10年単位で続きそうだわ。。
658デフォルトの名無しさん
2019/08/28(水) 10:10:28.35ID:mAC2Cq6c そりゃこのスレでも
「閃いた!stdを usingすれば文字を打つのが少なくなるよ!」って宣う輩がいるくらいだし
「閃いた!stdを usingすれば文字を打つのが少なくなるよ!」って宣う輩がいるくらいだし
659デフォルトの名無しさん
2019/08/28(水) 10:16:52.21ID:FUc/M6fg 趣味でc++のパズルにはまってる人と
仕事で生産的に使いたい人とでは
言語に期待するものが違うからね
区別しないと
仕事で生産的に使いたい人とでは
言語に期待するものが違うからね
区別しないと
660デフォルトの名無しさん
2019/08/28(水) 10:25:14.14ID:4pdYY7R1 このビルド周りのクソ仕様のせいで年々インタプリタ型に人が流れていくんだわ
661デフォルトの名無しさん
2019/08/28(水) 11:21:15.45ID:PYS/X6sQ VS使ってるからmakeとかさっぱりです
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 [蚤の市★]
- 「中国人の訪日熱は冷めた」 人気旅行先から日本外れる 14日で自粛呼びかけ1カ月 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- クリスマスの「予定なし」54% [少考さん★]
- 日銀0.75%に利上げへ、30年ぶりの水準に 19日金融政策決定会合 [蚤の市★]
- 【話題】好きな鍋は?! 「寄せ鍋」「キムチ鍋」「水炊き」「もつ鍋」「豆乳鍋」「ちゃんこ鍋」「ごま坦々鍋」「トマト鍋」 [ひぃぃ★]
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪★2
- 【実況】博衣こよりのえちえち機動戦士ガンダム逆襲のシャア🧪★3
- 愛国者「釘を使わない日本独自の伝統工法スゴイ!」X民「それ中国起源ですよ」→批判殺到 [834922174]
- 茶ぁしばこうや···
- 官僚が夜中まで頑張って作った答弁書には「台湾有事答えない」と書いてあったのに、高市が答えてしまったことが発覚🤦‍♂ [271912485]
- J( 'ー`)し「で、アンタなんで働かないの?」 ワイ👶「理由は2つありまして~」🏡
