[過去ログ] C++相談室 part164 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
169: (ワッチョイ 469a-D/IE) 2023/06/08(木)00:14 ID:mm4FKY9+0(1) AAS
例えばstodが解釈できる数値表現を正規表現でも解釈したいと思ったらどうしたら
170: (アウアウウー Sac5-tVFH) 2023/06/08(木)11:09 ID:rxjbLVG0a(1) AAS
仕様の不備は運用でカバー
171(1): (ワッチョイ b901-1DxI) 2023/06/09(金)00:34 ID:Y9bb1A2p0(1/2) AAS
std::sort (std::execution::par, v.begin(), v.end());
上記で並列ソートできるとのことですが何並列なんでしょうか?
もし環境に合わせて良きに計らってくれるのなら
その良き並列数を取得する関数などありますか?
172: はちみつ餃子◆8X2XSCHEME (ワッチョイ e53e-N/Lw) 2023/06/09(金)01:32 ID:vjFKJkM00(1) AAS
>>171
詳細は言語仕様では規定されていない。
リソースが不足していれば並列化されないこともあり得る。
並列化は大抵の場合に OS のサポートが必要だし
どういうサポートがあるかわからんので言語として明瞭な規定を決められない。
並列化される保証はないのにデータ競合が発生しないように実装するのは
プログラマの責任なので若干の理不尽さを感じなくもないが
C++ ってのはそういうもんなので……。
173(1): (ワッチョイ 6293-1rII) 2023/06/09(金)07:16 ID:bBOCrSG+0(1) AAS
週末のレイトレーシングで1-17あたりをマルチスレッドにしてみたんだけど、ubuntu上でg++やインテルコンパイラだとスレッド数を増やすと逆におそくなるんです。windows上でvisualstudioでコンパイルすると、望み通りスレッド数を増やすほど速くなりました。何でなんでしょう?
174: (ワッチョイ eef2-2RXP) 2023/06/09(金)08:07 ID:e2G6/2re0(1) AAS
>>173
>週末のレイトレーシングで1-17
全く意味がわからないんだが?
>何でなんでしょう?
お前のコーティングのせいじゃないか?
175: (ワッチョイ 916e-aXLw) 2023/06/09(金)08:18 ID:m5f79nsG0(1/2) AAS
gccはね・・・どうも平行/並列処理には本気じゃないところがある
たとえばstd::execution::parなんか真面目にやらんかこらって言いたくなる
176: (ワッチョイ 916e-aXLw) 2023/06/09(金)08:19 ID:m5f79nsG0(2/2) AAS
無料なので強く出られないけどね
177: (ワッチョイ b901-1DxI) 2023/06/09(金)11:49 ID:Y9bb1A2p0(2/2) AAS
皆さんレスを有り難うござます
うちはstd::execution::parで効果絶大です
$ g++ --version
g++ (Debian 10.2.1-6) 10.2.1 20210110
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
178: (ワッチョイ b901-mwg1) 2023/06/09(金)22:45 ID:uysUozYZ0(1) AAS
なるほどなあ
179: (ワッチョイ 13ad-2rqm) 2023/06/10(土)02:07 ID:oiDhCbH60(1) AAS
EASTLが久しぶりにバージョンアップしたね
180: (ワッチョイ c901-7YjN) 2023/06/10(土)07:02 ID:kaZ6v5kb0(1) AAS
ほう!いいね
181: (ワッチョイ b16b-q0yD) 2023/06/14(水)07:54 ID:/jeWb7sY0(1/2) AAS
time コマンドで調べたメモリの使用量 (max resident set size) が理論値よりも多くて、原因を特定するためにコード内の各箇所でその時点でのメモリ使用量を出力できたら良いなと思います。
実行環境は Linux なのですが、どのようにするべきでしょうか?
182(8): (ワッチョイ b16b-q0yD) 2023/06/14(水)08:43 ID:/jeWb7sY0(2/2) AAS
あとメモリに関連した質問で、例えばめちゃデカい std::vector を要素数 1 に resize しても capacity はめちゃデカいままですよね?
STL コンテナ以外にも、大きいメモリが割り当てられてるオブジェクトを使用後に破棄したいというケースがよくあります。
最も簡単なやり方は関数とか局所的なスコープとして切り出すことかと思いますが、他に、オブジェクトに割り当てられているメモリを手動で解放する方法があったら教えてください。
183(2): (スプッッ Sd33-5Oyn) 2023/06/14(水)08:49 ID:Xd2fVcpxd(1) AAS
/proc/self/stat というファイルを覗きに行くか、
getrusage というシステムコールで取得することになるかな
184(2): はちみつ餃子◆8X2XSCHEME (ワッチョイ c13e-2rqm) 2023/06/14(水)09:19 ID:O3itrano0(1) AAS
>>182
そのために shrink_to_fit がある。
詳細は実装依存なので何もしない関数であっても仕様に反しないけど
常識的には各実行環境で効率的に動くように実装されるので
まずは試してみても損はないと思う。
アロケータを自作してもあまり制御できないんよね。
アロケーションが必要になったらコンテナからアロケータが呼ばれるという
受動的な構造なのでコンテナによるメモリ管理戦略にそれほど関与できるわけではない。
本当にどうしても標準ライブラリの挙動の詳細が不満なら
自分で同等のものを実装する (または望ましいものをどこかから見つける) しかないよ。
185(4): (アウアウウー Sadd-g1CP) 2023/06/14(水)10:15 ID:iWYHYN4ra(1/3) AAS
>>182
new で造って delete (または delete []) で解放
186(2): (ワッチョイ 8bfb-Xx8j) 2023/06/14(水)12:28 ID:XWt8afSz0(1) AAS
更にいうと、deleteはgccでは推奨されないのでptrを使うよりはstaticもしくはvirtualを使いましょうね。
187(2): (テテンテンテン MMeb-jufV) 2023/06/14(水)12:29 ID:XEzvAdInM(1) AAS
>>182
>>185とほとんど同じだけどunique ptrで管理。
ヒープの確保時間が問題になるならアロケーター使ってヒープを予約する。
188(1): (ワッチョイ d9f0-EP1b) 2023/06/14(水)13:12 ID:9CAXVpD30(1) AAS
>>182
vector<空にしたいオブジェの要素の型>().swap(空にしたいオブジェ)
上下前次1-新書関写板覧索設栞歴
あと 814 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s