https://mevius.5ch.net/test/read.cgi/tech/1589424805/
※前スレ
C++相談室 part152
https://mevius.5ch.net/test/read.cgi/tech/1594528940/
テンプレおしまい
C++相談室 part153
■ このスレッドは過去ログ倉庫に格納されています
2020/10/10(土) 23:18:20.00ID:i4F+i14Y
378デフォルトの名無しさん
2020/10/23(金) 20:21:43.75ID:DuAJkWLf >>377
同一人物なんだが君は何に見えたのかな??
同一人物なんだが君は何に見えたのかな??
379デフォルトの名無しさん
2020/10/23(金) 20:22:37.35ID:DuAJkWLf で、君はK&R Cは使えるのか?
>>379
K&R1 か K&R2 かを指定してください
K&R1 か K&R2 かを指定してください
381デフォルトの名無しさん
2020/10/23(金) 20:32:42.02ID:DuAJkWLf もちろん1よ
2なんて馬鹿言うわけねえだろ
何が言いたいの? おまえさんは
2なんて馬鹿言うわけねえだろ
何が言いたいの? おまえさんは
382デフォルトの名無しさん
2020/10/24(土) 00:28:14.62ID:5I5noegP >>341
>nonbuffered しろってか
別に
非同期要素同士のハンドシェークがうまく行っているかは
callerとcallerの呼び出し順序に崩れが無いことをメッセージの中身とともに確認できればほぼほぼ十分なので
printf()を呼んでから出力されるまでの時間はあんま拘る意味は無い
>nonbuffered しろってか
別に
非同期要素同士のハンドシェークがうまく行っているかは
callerとcallerの呼び出し順序に崩れが無いことをメッセージの中身とともに確認できればほぼほぼ十分なので
printf()を呼んでから出力されるまでの時間はあんま拘る意味は無い
383はちみつ餃子 ◆8X2XSCHEME
2020/10/24(土) 02:46:57.76ID:yf0wmlMH 非同期な処理を観察するってのは非同期な処理が「失敗しているかもしれない」のを見つけ出さなきゃいけないってことだよね。
複数のスレッドが競合したりする場合もあるってことだよね。
printf は歳入可能でもないし、問題があるときは printf の処理も信用できないと思うんだけど。
信用できないけどバッファに溜まったまま吐き出されないということはなるべくないようにしたいって話でしょ。
複数のスレッドが競合したりする場合もあるってことだよね。
printf は歳入可能でもないし、問題があるときは printf の処理も信用できないと思うんだけど。
信用できないけどバッファに溜まったまま吐き出されないということはなるべくないようにしたいって話でしょ。
384デフォルトの名無しさん
2020/10/24(土) 06:18:58.62ID:S/SsQhb2 printfが再入可能でないってどゆこと? strtokみたいに状態を持つのか?
385デフォルトの名無しさん
2020/10/24(土) 08:34:42.41ID:H3Ix9ZgH スレッドセーフとリエントラントってどう違うの?
386デフォルトの名無しさん
2020/10/24(土) 08:40:39.80ID:VP+yyMyu 単一スレッドでも再帰なんかで再入は発生しうる
関数内でクリティカルセクションなどを使ってスレッド同期するようにしていても状態を持つ作りだと同一スレッドからの再入で異常になることはある
関数内でクリティカルセクションなどを使ってスレッド同期するようにしていても状態を持つ作りだと同一スレッドからの再入で異常になることはある
387デフォルトの名無しさん
2020/10/24(土) 08:44:50.93ID:VP+yyMyu Cランタイムは通常スレッドセーフだよね
だから複数スレッドでprintfを読んだりerrnoを参照してもよい
Windowsの場合、_beginthreadで作成したスレッドはCランタイム安全、CreateThreadで作成したスレッドはCランタイム安全ではないとかいう話もあった
だから複数スレッドでprintfを読んだりerrnoを参照してもよい
Windowsの場合、_beginthreadで作成したスレッドはCランタイム安全、CreateThreadで作成したスレッドはCランタイム安全ではないとかいう話もあった
388デフォルトの名無しさん
2020/10/24(土) 11:13:00.25ID:aZOaF4i3 >>385
今、リエントラント(再入可能)という言葉は余り聞かなくなっているが、
ハードウェアに密着したプログラムを書くときに、ハードウェア割り込みの
割り込みルーチンがまだ終わってないタイミングで、同じ割り込みが生じ、
同じルーチンが再帰的に呼び出されることがあり、そのような呼び出しに
対応しているものを「リエントラント」と呼ぶことがあった。
ただし、そのようなプログラムは複雑になりがちなので、ハードウェア
割り込みが生じ、割り込みルーチンがまだ終わってないタイミングで、
同じ割り込みを発生させる原因がもう一度発生しても、割り込みルーチン自体を
呼び出さないようにする手法が使われることが多かった、というか、
その様にプログラムすることが標準とされ、そのためにプログラマブル割り込み
コントローラなるものが、その役割を果たすモードを持っており、それが通常、
有効な状態にされていた。
今、リエントラント(再入可能)という言葉は余り聞かなくなっているが、
ハードウェアに密着したプログラムを書くときに、ハードウェア割り込みの
割り込みルーチンがまだ終わってないタイミングで、同じ割り込みが生じ、
同じルーチンが再帰的に呼び出されることがあり、そのような呼び出しに
対応しているものを「リエントラント」と呼ぶことがあった。
ただし、そのようなプログラムは複雑になりがちなので、ハードウェア
割り込みが生じ、割り込みルーチンがまだ終わってないタイミングで、
同じ割り込みを発生させる原因がもう一度発生しても、割り込みルーチン自体を
呼び出さないようにする手法が使われることが多かった、というか、
その様にプログラムすることが標準とされ、そのためにプログラマブル割り込み
コントローラなるものが、その役割を果たすモードを持っており、それが通常、
有効な状態にされていた。
389デフォルトの名無しさん
2020/10/24(土) 11:21:13.53ID:aZOaF4i3 >>388
一方、単一スレッドプログラムの場合、mallocの中からmallocが再帰的に呼び出される
ことはそもそもない。printfも同様。
なので、複数スレッドが動作している場合でも、各スレッドにおいては、
mallocやprintfが再帰的に呼び出されることはない。
そして、mallocを作る場合、Heapに関する重要データを読み書きする時、クリティカルセクション
のようなもので囲って、1つのスレッドだけが読み書きできるようにするような手法が使われる。
この場合、その区間を実行しているのは、最大で1スレッドのみであり、複数スレッドが
同時に実行することはない。
もちろん、malloc自体は同時に複数のスレッドが呼び出しても良いが、malloc内部で重要データ
の読み書きが行なわれるのは、必ず1スレッドのみで、それ以外のスレッドは待機させられる。
割り込みハンドラをリエントラントにする場合には、このようなクリティカルセクション的な
やり方は絶対に使えない。
まず、割り込みハンドラは、実際に実行しているのは1スレッドと言えば1スレッド。
割り込み自体が、1コアしかなかったZ80などにおいても有った概念でもあるし、それは当然であるが。
一方、単一スレッドプログラムの場合、mallocの中からmallocが再帰的に呼び出される
ことはそもそもない。printfも同様。
なので、複数スレッドが動作している場合でも、各スレッドにおいては、
mallocやprintfが再帰的に呼び出されることはない。
そして、mallocを作る場合、Heapに関する重要データを読み書きする時、クリティカルセクション
のようなもので囲って、1つのスレッドだけが読み書きできるようにするような手法が使われる。
この場合、その区間を実行しているのは、最大で1スレッドのみであり、複数スレッドが
同時に実行することはない。
もちろん、malloc自体は同時に複数のスレッドが呼び出しても良いが、malloc内部で重要データ
の読み書きが行なわれるのは、必ず1スレッドのみで、それ以外のスレッドは待機させられる。
割り込みハンドラをリエントラントにする場合には、このようなクリティカルセクション的な
やり方は絶対に使えない。
まず、割り込みハンドラは、実際に実行しているのは1スレッドと言えば1スレッド。
割り込み自体が、1コアしかなかったZ80などにおいても有った概念でもあるし、それは当然であるが。
390デフォルトの名無しさん
2020/10/24(土) 12:26:35.65ID:w2qFem8L おじいちゃん
スレタイ読もうか
スレタイ読もうか
391デフォルトの名無しさん
2020/10/24(土) 12:29:55.83ID:+GevKgJx coutデバッグと言うべきってか
392デフォルトの名無しさん
2020/10/24(土) 12:34:34.81ID:UCFHvZt3 >>388
多重割り込みの話と勘違いしてねーか?
同一割り込みなんて起きなくてもメインルーチンで使ってる関数を割り込みルーチンで使う可能性があるならリエントラントでないとおかしくなるよ
そもそもシングルスレッドで割り込み使ってなくてもある関数内で直接的もしくは間接的に自分自身が呼ばれる場合もリエントラントでないとおかしくなる
最近の言語だとグローバル変数とか静的変数使ってなきゃ(例外はあると思うが)リエントラントになるのであまりに気にする必要はなくなった
多重割り込みの話と勘違いしてねーか?
同一割り込みなんて起きなくてもメインルーチンで使ってる関数を割り込みルーチンで使う可能性があるならリエントラントでないとおかしくなるよ
そもそもシングルスレッドで割り込み使ってなくてもある関数内で直接的もしくは間接的に自分自身が呼ばれる場合もリエントラントでないとおかしくなる
最近の言語だとグローバル変数とか静的変数使ってなきゃ(例外はあると思うが)リエントラントになるのであまりに気にする必要はなくなった
393デフォルトの名無しさん
2020/10/24(土) 14:30:45.75ID:ZbhxKyMw ちゅうことはスレッドセーフなloggerが全部同じファイルにログを書き込むんだろ
これもうそのまんま出力に逐一印字させた方がいいんじゃね
これもうそのまんま出力に逐一印字させた方がいいんじゃね
394デフォルトの名無しさん
2020/10/24(土) 15:33:28.19ID:H3Ix9ZgH >>391
いや、厳密にはstd::coutデバッグというべき(ドヤ
いや、厳密にはstd::coutデバッグというべき(ドヤ
395デフォルトの名無しさん
2020/10/24(土) 15:35:14.21ID:LXBNuCv6 printf()はスレッドセーフ
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ
もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな
複数スレッドから呼べる
規格のどこに書いてあるかは示せないが探せばあるはず
なぜなら、ファイルI/Oやからなあれ
もちろんこれは、printf(("ABC")とprintf("CDE")をそれぞれ別スレッドで呼んだ場合、
ABC、CDEという表示になるという保障にはならないが
実際にはたいていのケースで行単位で分かれてくれるからデバッグには困らない
行が頻繁に混じってしまってデバッグにならないようなら初めて行単位の排他の追加を検討する
みたいな
396デフォルトの名無しさん
2020/10/24(土) 15:37:01.80ID:LXBNuCv6 ただしもちろん割り込みルーチンからprintf()を呼ぼうとするような猛者は知らん
火の粉がこっちに降りかからない限り
放っておいて差し上げなさい
火の粉がこっちに降りかからない限り
放っておいて差し上げなさい
397デフォルトの名無しさん
2020/10/24(土) 15:38:11.89ID:cYR5fjBG 保障にはならないが〜
実際にはたいていのケースで〜
こういうの一番困る
実際にはたいていのケースで〜
こういうの一番困る
398デフォルトの名無しさん
2020/10/24(土) 17:06:18.74ID:ZbhxKyMw printf使ってヘンになってるならまだ許せるが自前のクソloggerが全般的にクソ動作してると排除したくなる
399デフォルトの名無しさん
2020/10/24(土) 17:47:23.40ID:H3Ix9ZgH 非同期シグナル安全な関数のリストにprintfがない・・・
https://docs.oracle.com/cd/E19683-01/816-3976/gen-26/index.html
https://docs.oracle.com/cd/E19683-01/816-3976/gen-26/index.html
400デフォルトの名無しさん
2020/10/24(土) 17:57:44.41ID:lGAQOfIr 自前でロックすりゃいいだろ
401デフォルトの名無しさん
2020/10/24(土) 18:01:02.56ID:H3Ix9ZgH printf実行中に割り込みが発生して、なおかつそのhandlerでprintf使ってると
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?
デッドロックが発生する(?)
※printfは内部でmallocを使ってるので、>>389に書いてあるようにheapの
操作時にロックを取得しようとするため
という感じかな?
402デフォルトの名無しさん
2020/10/24(土) 18:10:47.63ID:lGAQOfIr なら自前のprintf作ればいいだろ
標準に頼りきるバカが
標準に頼りきるバカが
404デフォルトの名無しさん
2020/10/24(土) 18:32:15.74ID:lGAQOfIr 己の道は己で切り開くものだ
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな
貴様らジャップどもは文句たらたらと言ってるだけで行動に移そうとはしない
猿に退化する課程の獸だな
405デフォルトの名無しさん
2020/10/24(土) 18:55:26.18ID:W2/6It6m406デフォルトの名無しさん
2020/10/24(土) 19:34:38.35ID:kvu4j0jg >>404
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw
無関係な問題まで何でもかんでも民族や国籍に結びつけて的外れな非難をしようとするとは、怒りに囚われて論理的思考力が壊滅的にダメージを受けてるんだろう。プログラマとしては致命的だなw
407デフォルトの名無しさん
2020/10/24(土) 19:40:13.77ID:LXBNuCv6 割り込みルーチンの中からprintfを読んだら危険なのは
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;
OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
一般にOS機能のうちクリティカルセクション(ロック)みたいな高級な機能が
ユーザーが勝手に定義した割り込みルーチンのコンテキストでは使えないからじゃわ;
OSはOSで割り込みを受けてスレッドのコンテキストを管理しているので、
それとは非同期に起きたOSのあずかり知らない割り込みで
OSの高級な機能が呼ばれたらOSの管理情報の排他が崩れる
408デフォルトの名無しさん
2020/10/24(土) 19:44:20.88ID:LXBNuCv6 割り込みルーチンから呼んでも安全なprintf()を自力で実装するとしたら
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート
メインのOSとコードベースをまったく異にする必要があるのでOSの自力実装に近くなってくる
やっぱ割り込みルーチンからはprintf()呼ばないというのが一番スマート
409384
2020/10/25(日) 08:15:28.48ID:B8Qi0Gue 聞くんじゃなかった
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・
printf( → fprintf(stdout,
みたいなもんでstdoutが静的記憶域期間とか
そういう説明が聞けるのかと思いきや
なんだこりゃ・・・
410デフォルトの名無しさん
2020/10/25(日) 08:36:53.97ID:fEg6VUML stdoutが静的記憶だとして(大概のOSではIOBで管理しておりそうなっているはずだが
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、
printf()をユーザー定義な割り込みルーチンから呼ぶと
それの排他を安全に行える人がだれも居なくなる、
411デフォルトの名無しさん
2020/10/25(日) 10:46:14.61ID:zd7LSfWt printfデバッグでダメならputデバッグでいいじゃん
412デフォルトの名無しさん
2020/10/25(日) 11:40:46.63ID:luVqTFHx printfごときでいちいちケチつけやがって陰気なヤロウどもだぜ
413デフォルトの名無しさん
2020/10/27(火) 20:01:20.88ID:9N87g439 こいつらは屁理屈言いたいだけでデバッグする気なんて少しもない。
414デフォルトの名無しさん
2020/10/27(火) 23:03:02.20ID:1nczmGPR お金払われればやるよ
415デフォルトの名無しさん
2020/10/27(火) 23:23:32.01ID:2LDrYrw3 金もらわないとデバッグしないの?
つまらない人生だね
つまらない人生だね
416デフォルトの名無しさん
2020/10/27(火) 23:25:33.33ID:IA9V1GzZ そんなに楽しい事ならお前がやれば?
417デフォルトの名無しさん
2020/10/28(水) 13:38:51.49ID:6icraQaZ やらないならクソみたいなこと言ってないで黙ってりゃいいのに
418デフォルトの名無しさん
2020/10/28(水) 14:00:21.64ID:a3TqMSUE 普通は成果物に対して報酬を得るよね
バグを出したら潰すのは当たり前
お金払わなきゃデバッグしないとか言ってる人は客先常駐のような労働時間に対して賃金を得る労務提供型なんだろうか
労働者から脱却しないとソフトウェア開発の本当の楽しさを知ることはできない
バグを出したら潰すのは当たり前
お金払わなきゃデバッグしないとか言ってる人は客先常駐のような労働時間に対して賃金を得る労務提供型なんだろうか
労働者から脱却しないとソフトウェア開発の本当の楽しさを知ることはできない
419デフォルトの名無しさん
2020/10/28(水) 14:20:56.34ID:XBU5yUok 1レスの中で矛盾していくスタイル嫌いじゃない
成果に対して報酬があるならお金のためにバグ潰す
時間給なら貰えるお金は変わらないから「バグ潰すのは当たり前」と洗脳したり脅したりしないとバグは潰されない
成果に対して報酬があるならお金のためにバグ潰す
時間給なら貰えるお金は変わらないから「バグ潰すのは当たり前」と洗脳したり脅したりしないとバグは潰されない
420デフォルトの名無しさん
2020/10/28(水) 14:50:59.10ID:K+lW0Fsg いや、いるんだよ
他人が書いたコードを有料で引き継ぐ人
414がそうとは見えないけどね
他人が書いたコードを有料で引き継ぐ人
414がそうとは見えないけどね
421デフォルトの名無しさん
2020/10/28(水) 21:57:28.94ID:bY6aZzj9 つーか普通に仕事してたらちょいちょい
前任者が逃げた、とか潰れた、とか逮捕された、とかで
クソみたいなゴミクソウンコのコードをわたされて
これ保守してねー、みたいなクソみたいな仕事
おしつけられることなんてまれによくあることだろ
そんでなぜかそいつのクソゴミコードのバグを
まるでおれが出したかのように責められる、までがセット
前任者が逃げた、とか潰れた、とか逮捕された、とかで
クソみたいなゴミクソウンコのコードをわたされて
これ保守してねー、みたいなクソみたいな仕事
おしつけられることなんてまれによくあることだろ
そんでなぜかそいつのクソゴミコードのバグを
まるでおれが出したかのように責められる、までがセット
422デフォルトの名無しさん
2020/10/28(水) 22:56:44.64ID:a3TqMSUE ここってサラリーマンが多いのね
423デフォルトの名無しさん
2020/10/28(水) 23:22:28.00ID:58wSuA1P そんなん公然と拒否するか
0から作り直すかの二択だろ
0から作り直すかの二択だろ
424デフォルトの名無しさん
2020/10/29(木) 05:18:26.87ID:A02IsQiB425デフォルトの名無しさん
2020/10/29(木) 08:31:38.61ID:VBEUGOAK >>421
担当を引き受けたのなら、過去の潜在バグであってもお前の責務だろ
担当を引き受けたのなら、過去の潜在バグであってもお前の責務だろ
426デフォルトの名無しさん
2020/10/29(木) 15:25:24.71ID:wtO1e/xm >>423
こういう人間はソフトウェアなんかやらんでコンビニバイトでもやってた方が向いてるよ。
こういう人間はソフトウェアなんかやらんでコンビニバイトでもやってた方が向いてるよ。
427デフォルトの名無しさん
2020/10/30(金) 00:03:30.35ID:Wx+7ZgRN C++でもPythonの内包表記みたいにVectorの要素舐めていって
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?
全ての要素に特定の処理をしたものを別のVectorに代入することってできますか?
428デフォルトの名無しさん
2020/10/30(金) 00:17:54.24ID:V+g0QAOl まずPython処理系を書きます
429デフォルトの名無しさん
2020/10/30(金) 00:26:39.96ID:XbvTe/rK 内包表記に近いことは無理じゃない?
initialize listでもしかして?って思ったけどうまくできそうにない
initialize listでもしかして?って思ったけどうまくできそうにない
430デフォルトの名無しさん
2020/10/30(金) 08:18:43.66ID:ooe1U4VR つtransform & lambda
431デフォルトの名無しさん
2020/10/30(金) 09:52:48.93ID:5giIBuWJ std::transform(s.begin(), s.end(), t.begin(), [](int e) -> int { return e * 2 });
きっとforのほうが読みやすくて速いと思う
きっとforのほうが読みやすくて速いと思う
432デフォルトの名無しさん
2020/10/30(金) 10:04:53.11ID:73xlUHi2 あとはvalarrayとかな
433デフォルトの名無しさん
2020/10/30(金) 10:06:43.70ID:uffCAw9U 表現上はあたかもラムダ式使った華麗なことやってるように見えるけど
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね
むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの
マジでそう見えてるだけで、コンパイルするとfor文とそんなに変わらなくなるんじゃね
むしろどっかの時点でただのfor文に置き代わったりしてるんじゃないの
434デフォルトの名無しさん
2020/10/30(金) 10:22:13.62ID:73xlUHi2 インタープリターよりは速いよ
435デフォルトの名無しさん
2020/10/30(金) 11:34:39.85ID:7MkyV1Cp436デフォルトの名無しさん
2020/10/30(金) 11:37:53.83ID:7MkyV1Cp437デフォルトの名無しさん
2020/10/30(金) 11:41:09.18ID:7MkyV1Cp >>433
ループ分解されて要素分コード増えてる可能性もあるな
ループ分解されて要素分コード増えてる可能性もあるな
438デフォルトの名無しさん
2020/10/30(金) 13:24:53.40ID:Z0VCec0D forよりも関数的に書いた方が順序は気にせんでいいってメッセージを込めることはできるわけだが、
まあそういう風にかける場合って大抵forで書いても可読性下がらんほど簡易な内容のことが多い。
まあそういう風にかける場合って大抵forで書いても可読性下がらんほど簡易な内容のことが多い。
439デフォルトの名無しさん
2020/10/31(土) 00:26:11.33ID:T4Ek6w2r ヒエッ…、、OpenMPし放題…!
440デフォルトの名無しさん
2020/11/01(日) 15:21:18.11ID:iuijWT2g 競プロで使いたいのですが
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?
if i = 0 then return 0
elif i > 0 then return i - 1
を出来るだけ早く求めるには何かいい方法ありますかね?
ビット演算とかでなんとかなりませんかね?
441デフォルトの名無しさん
2020/11/01(日) 15:26:15.37ID:Ncbqgsya442デフォルトの名無しさん
2020/11/01(日) 15:26:18.66ID:BdB3gM+x unsignedですか?
443デフォルトの名無しさん
2020/11/01(日) 15:36:25.10ID:f5GbRfBo simdの比較使えば結果がビットマスクで取得できるのでそれを使うのが定石
両方計算してビット演算で選択
c++関係ない
両方計算してビット演算で選択
c++関係ない
444デフォルトの名無しさん
2020/11/01(日) 15:38:18.92ID:Lkejt9vc >>440
数値のビット数が解っているなら高速化できる
数値のビット数が解っているなら高速化できる
445デフォルトの名無しさん
2020/11/01(日) 15:49:40.49ID:Lkejt9vc446デフォルトの名無しさん
2020/11/01(日) 15:50:59.41ID:Lkejt9vc447デフォルトの名無しさん
2020/11/01(日) 16:00:31.30ID:Lkejt9vc448デフォルトの名無しさん
2020/11/01(日) 17:02:44.45ID:h5xlMYDq つか>>440はelseが何かわからんが、
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:
iがi≧0でやってくるのならデクリメントの飽和演算に見える件について:
449デフォルトの名無しさん
2020/11/01(日) 17:10:40.93ID:h5xlMYDq SIMD使うと飽和演算は楽勝かもしれんが、4個とか同時に並列に計算するんでなければ
かえって遅いんじゃ…
かえって遅いんじゃ…
450デフォルトの名無しさん
2020/11/01(日) 19:21:41.23ID:PTqWSgE4 >>440
アセンブラだったら、
sub eax,1
jnb lab1
xor eax,eax
lab1:
ret
でおしまい。最大で4クロック。
jmp命令は1つだけ。同じことをCで書くなら、
if (--i < 0) {
i = 0;
}
return i;
とか。
アセンブラだったら、
sub eax,1
jnb lab1
xor eax,eax
lab1:
ret
でおしまい。最大で4クロック。
jmp命令は1つだけ。同じことをCで書くなら、
if (--i < 0) {
i = 0;
}
return i;
とか。
451デフォルトの名無しさん
2020/11/01(日) 21:20:20.31ID:f5GbRfBo クロック数は蛇足でしょ
452デフォルトの名無しさん
2020/11/01(日) 23:07:30.49ID:gRIt+Ld+ 減算が必ず実行されるのはもったいない
... and eax,eax
... jz f@
... dec eax
@@:
... ret
... and eax,eax
... jz f@
... dec eax
@@:
... ret
453デフォルトの名無しさん
2020/11/01(日) 23:12:12.57ID:gRIt+Ld+ test ってあったかな...
454デフォルトの名無しさん
2020/11/01(日) 23:32:16.35ID:h5xlMYDq and eax,eaxも同じようなものなのでは…
どっちも多分パイプライン1段消費
ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど
どっちも多分パイプライン1段消費
ていうか投機的実行から戻す際のペナルティーは
常にデクリメントする>450の方が小さい可能性が微レ存
知らんけど
455デフォルトの名無しさん
2020/11/02(月) 00:26:45.06ID:dW4oDZpY そっかー
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら
投機的実行はまったく念頭にありませんでした
i が 0 である確率が小さいと考えるのかしら
456デフォルトの名無しさん
2020/11/02(月) 01:48:22.41ID:U5Xnw0i6 sub eax,1
adc eax,0
でなんとかなんないの?
adc eax,0
でなんとかなんないの?
457デフォルトの名無しさん
2020/11/02(月) 14:18:33.78ID:WhiKrslV458デフォルトの名無しさん
2020/11/02(月) 15:41:23.80ID:OFRBeKTl459デフォルトの名無しさん
2020/11/02(月) 15:44:36.12ID:OFRBeKTl >>456
そのコードは凄い。
そのコードは凄い。
460デフォルトの名無しさん
2020/11/02(月) 16:02:50.72ID:sYYC+nm2 >>456
キャリーちゃんか
キャリーちゃんか
461デフォルトの名無しさん
2020/11/04(水) 00:22:15.96ID:eR5jspY1 Macで環境構築どうすればいいですか
適当に記事あさればいいですか
適当に記事あさればいいですか
462デフォルトの名無しさん
2020/11/04(水) 00:32:44.91ID:pJnXfGcc yes
463デフォルトの名無しさん
2020/11/04(水) 08:22:43.71ID:3PEz6xa2 >>461
新し目のC++使うならhomebrewでg++-9でも入れるのがベターかも。
たとえばstd::filesystemとかcatalinaのXCode(clang++)でも対応したんだが、
バイナリを古いmacに持ってったら予想通り動かんかった。
新し目のC++使うならhomebrewでg++-9でも入れるのがベターかも。
たとえばstd::filesystemとかcatalinaのXCode(clang++)でも対応したんだが、
バイナリを古いmacに持ってったら予想通り動かんかった。
464デフォルトの名無しさん
2020/11/04(水) 20:11:40.32ID:X2fHUOCE 自クラスの終了時のコールバックメソッドで…delete this;すると…うまく消えるんだけど…。
コールバックメソッドは…boolを返す…delete this;した後も…メソッドは動き続けて…るんだよ…。
std::coutも反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。
コールバックメソッドは…boolを返す…delete this;した後も…メソッドは動き続けて…るんだよ…。
std::coutも反応してる…メインスレッドとかで…処理されているからですか?何故かが…解らない…。
465デフォルトの名無しさん
2020/11/04(水) 20:26:01.44ID:X2fHUOCE 464です…。いろいろ調べたら…できるみたいですが…なんでできるのかは…解りません…。
466蟻人間 ◆T6xkBnTXz7B0
2020/11/04(水) 20:30:16.22ID:tdZ4i2Gl thisインスタンスに影響しない関数のコードは多分、C言語の関数みたいに生成される。
関数のコードは不変な実体だと思う。
関数のコードは不変な実体だと思う。
467デフォルトの名無しさん
2020/11/04(水) 20:50:15.92ID:H9SHlq4g 難しく考えすぎ
extern "C" void the_call_back(struct obj_ptr* This)
{
free(This);
}
こうなってるだけだよ
*Thisを殺しても関数から戻るためのスタック情報はどうもせんだろ
extern "C" void the_call_back(struct obj_ptr* This)
{
free(This);
}
こうなってるだけだよ
*Thisを殺しても関数から戻るためのスタック情報はどうもせんだろ
468デフォルトの名無しさん
2020/11/04(水) 21:35:20.66ID:rY/M/1xY struct S1;
using V1 = std::variant<S1>;
struct S1
{
std::vector<V1> m_v;
};
これ合法?
using V1 = std::variant<S1>;
struct S1
{
std::vector<V1> m_v;
};
これ合法?
469デフォルトの名無しさん
2020/11/04(水) 21:39:36.00ID:occL3fQ7 ダメ
470デフォルトの名無しさん
2020/11/04(水) 21:44:35.56ID:rY/M/1xY471デフォルトの名無しさん
2020/11/04(水) 22:56:42.61ID:rY/M/1xY 駄目な根拠わかりませんか?
472デフォルトの名無しさん
2020/11/05(木) 00:49:04.74ID:WV05kVNu >>468
https://timsong-cpp.github.io/cppwp/n4659/res.on.functions#2
> In particular, the effects are undefined in the following cases:
> ...
> - if an incomplete type is used as a template argument when instantiating a template component, unless specifically allowed for that component.
https://timsong-cpp.github.io/cppwp/n4659/res.on.functions#2
> In particular, the effects are undefined in the following cases:
> ...
> - if an incomplete type is used as a template argument when instantiating a template component, unless specifically allowed for that component.
473デフォルトの名無しさん
2020/11/05(木) 01:14:10.93ID:E+L4EB1M C++17以降、std::vectorは不完全型を許容していて、std::variantは
using V1 = std::variant<S1>;
の時点でインスタン化されていない。
これはどう解釈すればいいのかな?
using V1 = std::variant<S1>;
の時点でインスタン化されていない。
これはどう解釈すればいいのかな?
474デフォルトの名無しさん
2020/11/05(木) 01:20:36.91ID:E+L4EB1M これが合法なら良かったんだけど、どうも無理っぽいな。
475デフォルトの名無しさん
2020/11/05(木) 01:46:23.37ID:E+L4EB1M using V1 = std::variant<S1>;
の時点では、テンプレートの明示的なインスタンス化はしていないし、使用していないので暗黙的なインスタンス化もされていない。
ってことでいいよね?
の時点では、テンプレートの明示的なインスタンス化はしていないし、使用していないので暗黙的なインスタンス化もされていない。
ってことでいいよね?
476デフォルトの名無しさん
2020/11/05(木) 01:54:08.91ID:E+L4EB1M boost::make_recursive_variantやstd::anyを知らないわけじゃないんだけど、オブジェクトが必要になるたびにnewするならC#やJavaで十分なわけで、C++のうまみ成分はこういうところにあると思うんですよね。
何とかなりませんかね?
何とかなりませんかね?
477デフォルトの名無しさん
2020/11/05(木) 02:27:49.98ID:tM7hzUED■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民・麻生太郎 副総裁 石破政権の1年は「どよーん」 高市政権の発足で「何となく明るくなった」「世の中のことが決まり動いている」 [Hitzeschleier★]
- 東京都「都民の税金1.5兆円が国に奪われている」「全国に分配されている」に地方民ブチギレ [Hitzeschleier★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- トランプ、G7に代わるcore 5を発表 [805596214]
- イ カ れ た メ ン バ ー 紹 介 す る ぜ !
- ネトウヨ「ゆーちゅぶでお勉強した!😡💢」高市悲報 [153490809]
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★5
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★4
