C++相談室 part148at TECH
C++相談室 part148 - 暇つぶし2ch981:デフォルトの名無しさん
20/02/16 18:53:05 Yy7z+EdH.net
>>950
ありがとん。

982:デフォルトの名無しさん
20/02/16 21:26:26 D0JJuQrX.net
>>953
いえいえ

983:デフォルトの名無しさん
20/02/16 23:16:48.80 B02+i8yM.net
>>924
まあそりゃね
使えるようにしてもPCやスマホのように自由には使えないぞ
こまめに確保解放なんてことはしない
基本最初に確保して終わり
解放はしない
だから確保しか出来ないヒープも選べる

984:デフォルトの名無しさん
20/02/16 23:20:30.34 B02+i8yM.net
>>927
それはPCやスマホなどリッチな環境の場合
>>931
一見軽そうで重い関数があったりするから
同じ人が同じ時に作ってたらそんな処理にはしないだろうけど

985:デフォルトの名無しさん
20/02/17 00:08:48 U44ZlMgK.net
白物家電のマイコンやら、pfcのマイコンやらもやったが、そんなのはそもそもmalloc使うような環境じゃなかったしなぁ
RAMもkB単位で少ないし、自由に関数呼べるほどスタックも無いし
割り込み部分はアセンブリで書いてた

986:デフォルトの名無しさん
20/02/17 00:14:53 /jKzm6f9.net
今は冷蔵庫や電子レンジもAI積んでネットワークに繋がるIoT時代だけど
それでも組み込みって未だにそんな感じなの?

987:デフォルトの名無しさん
20/02/17 00:16:48 U44ZlMgK.net
まあそれは特に東南アジア向けだったし
日本よりさらにチープだったのかも

988:デフォルトの名無しさん
20/02/17 00:19:59 uafn9Eqq.net
>>958
そんなのごく一部

989:デフォルトの名無しさん
20/02/17 00:20:59 uafn9Eqq.net
いまだにチープな8bit CPUもたくさん使われている

990:デフォルトの名無しさん
20/02/17 00:23:25 U44ZlMgK.net
cortex-m0とか載ってたらもう小躍りしちゃうくらいのリッチさだよね

991:デフォルトの名無しさん
20/02/17 00:34:16.83 H8nvOahp.net
リッチなCPUを使うって事は
それだけ求められる事が大きいわけで

992:デフォルトの名無しさん
20/02/17 07:41:59.44 xyBTOgD8.net
でもCPU節約するために人件費かけて結局商品高いじゃん

993:デフォルトの名無しさん
20/02/17 09:22:40.01 usLteeFN.net
趣味じゃないんだから
当然トータルで考えるよ
開発工数、単価、機能性能、信頼性、供給、大人の事情、...

994:デフォルトの名無しさん
20/02/17 10:36:24 sgjaAMaL.net
ゲーム業界の人だけど
new使っても問題ないってのはおれの常識とは異なる

まず問題が広すぎる
言いたいことはデフォルトのグローバルヒープを無邪気に使っていいか
ということだと仮定すると
AAAクラスでそんな杜撰なことしてるところはないと思う

組み込みもそうだがリアルタイム性が必要とされるところでは、メモリ予算というものがある
グラフィック、オーディオ、ネットワークなどのモジュールごとにメモリいくらと決められる
モジュールの責任者はその中でやりくりする
ここで大事なのはメモリの最大使用量を保証しなければならないってこと

必要ならローカルのヒープは作ったりするが、この時点で担当者が気ままにnewってのは認められない
基本的にすべてコントロールされる
現実的に最大量が正確に見積もれないものもあるがそれでも最大量は決める

995:デフォルトの名無しさん
20/02/17 10:57:08.38 sgjaAMaL.net
といってもグローバルヒープを使わないわけじゃない
オープンソースのもので無邪気にmallocするものは多数あるが、それほど荒ぶらなければそのまま使う
(リアルタイム性が不要なら仮想メモリに任せる)
あとmalloc遅くないという論調の人がいるけどそれはベストケースの話でしょう
ヒープメモリが不足したり一度に巨大なメモリを確保する場合はシステムコールになるからずっと遅くなる
ワーストが見積もれないものはリアルタイムで使いづらい
まぁ昨今は仮想マシン上で動くゲームが多数あるわけで気にしなくていいレベルという意見はある
ただesports系で一瞬カつくとか商品性に関わるわけで
また後から直すのも地獄なので
最初から計画的に作るべきだろう

996:デフォルトの名無しさん
20/02/17 11:06:49.04 tDJaHp5K.net
ここC++スレだよね、つかぬことだけど
記憶管理はいつでも如何様にもカスタマイズできるようにtypename Allocatorになってるわけじゃん
なんでいきなり組み込みには向かないとかキリッてんの?

997:デフォルトの名無しさん
20/02/17 12:20:34.06 ipOy1V1j.net
>>968
typename Allocatorとかすげぇ初心者っぽい
キリってるのはお前だ

998:デフォルトの名無しさん
20/02/17 12:22:54.84 tDJaHp5K.net
>>969
kwsk

999:デフォルトの名無しさん



1000:sage
>>968 標準ライブラリでもallocatorが指定できないものもあるんだよ もはや今のc++で標準ライブラリを全面的に使いつつ、ヒープを個別に差し替えるのはかなり非現実的だ allocatorを差し替えられてもnewするタイミングや量はリバースエンジニアリングしないとわからない それが問題になることもある



1001:デフォルトの名無しさん
20/02/17 12:48:18 2c+OKT/4.net
てか、静的確保したメモリブロック使うアロケータ書いてそれで標準コンテナ使うのが基本じゃね
まあeastlでも良いが

1002:デフォルトの名無しさん
20/02/17 12:51:50 tDJaHp5K.net
>>971

> 標準ライブラリでもallocatorが指定できないもの
例えば?

newだってoperator newですぐカスタマイズできるし
placementで環境依存の細かい設定もできる

ライブラリはISO/IEC14882に固執する必要はなく
サードパーティでも内製でもより都合のよいほうを使えばいい
というだけの話

1003:969
20/02/17 12:56:55 nfQInp9b.net
カスタマイズの話なら真っ先にnewの話をすべきなんだが順番おかしくね?
ていうか今時はallocatorより先にpolymorphic resourceだと思うが

というかそもそもmallocの速度の話からであって、いきなりallocatorの話したり
C++全体を否定されたかのように過剰反応するとか・・

1004:デフォルトの名無しさん
20/02/17 13:12:34.13 y136Nw0W.net
仕様通りに書けばいい感じにうごいてくれて、責任は俺にはないとか
思い込んでんじゃってるキッズなんだろう。
デバッグするなんてことはもちろん頭にない。

1005:865
20/02/17 13:34:28 FC0zZXW0.net
>>890からの流れでは直後からnewが出てきてたろ
C++が組み込みに向かないという主張の
理由がmallocじゃおかしいだろ
それしか使えんわけでもなし

1006:デフォルトの名無しさん
20/02/17 13:44:11 nfQInp9b.net
>>968に突っ込むと>>890に同意したことになるのか

1007:デフォルトの名無しさん
20/02/17 14:00:21 sgjaAMaL.net
>>973
> > 標準ライブラリでもallocatorが指定できないもの
> 例えば?

でしょ?
お前さんは人並み以上にc++知ってると思うけどこの事実知らない
どこで使われてるか知らなきゃ置き換えができないよね

答えはあえて教えない
標準ライブラリのヘッダーをnewでgrepすればallocatorを通さないものが見つかるさ
自分で確認してこりゃ置き換え無理だわと悟って欲しいw
もし見つからないなら後で書くよ

ちなみにグローバルにnewを置き換えるぐらいならmallocのバイナリを差し替えた方が早いし確実

1008:はちみつ餃子 ◆8X2XSCHEME
20/02/17 14:31:40 qpTD/rYC.net
おっ。
野党みたいなことを言い始めたぞ。

1009:デフォルトの名無しさん
20/02/17 14:37:47 nfQInp9b.net
>>979
横からだが、具体的に誰のどこを指してそう思ったのかよろしく

1010:デフォルトの名無しさん
20/02/17 14:59:36 QYRwM+i2.net
>>966
もちろん、むやみやたらと使って全く問題ないわけではない。
が、本当に必要な箇所で使う程度なら(多くの場合)余り問題ないという程度。
大体ゲームの場合のnewやmallocは、敵や弾やイフェクト、3Dオブジェクトなど
を1つずつ収めるために使うことが多いが、ゲームの1シーン内に登場する個数が
newやmallocが問題ない程度に元々なっている事がわりと多いと言うだけ。
3Dの雑草の葉っぱ一枚単位で new したりすると問題になってくるかもしれない。

1011:デフォルトの名無しさん
20/02/17 15:51:15.09 sgjaAMaL.net
>>981
なんとも感覚的な話だね
だいたい動けばOK!って感じ?
おれは仕事でそういうもの作りはしない

1012:デフォルトの名無しさん
20/02/17 16:08:54 HCTe1ZqE.net
コンシューマかPCかでも違うだろうし
(自分はさほど詳しくないが、基本コンシューマは標準ヒープ使わないはず)
ジャンルによっても違うんじゃね
PCのMMORPGなんかだとシーン中のメモリ確保は必須だろうし
あと草は普通同じメッシュやテクスチャ使うだろうし、揺れを入れるにしても一つ一つにデータ持たせるなんてアホなことしないだろ

1013:デフォルトの名無しさん
20/02/17 16:15:08 tDJaHp5K.net
>>978
「後で」かw
もう1000間近だし期限切らないでおけば時効だろってか?

1014:デフォルトの名無しさん
20/02/17 16:32:36.59 y136Nw0W.net
いやそれくらい調べろって話だろ。。馬鹿が。

1015:デフォルトの名無しさん
20/02/17 16:44:43.28 tDJaHp5K.net
>>985
sgjaAMaLが、自分の話に傾聴してきた人の質問に答えなかった
つまり自分の考えを伝える努力を中止したということでしかない
何人も自らの意見を他人に伝えるには
その意見を説明するしかなく
説明をやめることは沈黙に等しい

1016:デフォルトの名無しさん
20/02/17 16:55:56.23 9WiS2n1W.net
黙って調べてくれば?
調べて無いと結論づけられればまた偉そうに出来るだろw

1017:デフォルトの名無しさん
20/02/17 17:15:39.87 9Dh9neDd.net
ちゃうねん。
僕が組み込みいうたのはArduinoのことな。
RAM2KBやし。

1018:デフォルトの名無しさん
20/02/17 17:31:33 9Dh9neDd.net
Arduino面白いよ。

1019:デフォルトの名無しさん
20/02/17 18:25:59 sgjaAMaL.net
>>984
条件は明示してるんだからおれが書くかはお前に委ねられている
1000が迫っているぞw

1020:デフォルトの名無しさん
20/02/17 18:30:32 T3Z0MUY2.net
この手の人最後まで答えないか
答えても的外れなのしか見たことないわ

1021:デフォルトの名無しさん
20/02/17 18:32:18 wtNXL+i7.net
だね
消えて良いよ

1022:デフォルトの名無しさん
20/02/17 19:27:27 XybgTXf7.net
>>978
std::arrayとか言わないよね

1023:デフォルトの名無しさん
20/02/17 19:33:45 nfQInp9b.net
arrayのどこに動的メモリ確保が出てくるんだよ
アホか

1024:デフォルトの名無しさん
20/02/17 19:46:45 9Dh9neDd.net
なぞなぞですか。

1025:デフォルトの名無しさん
20/02/17 23:00:17 HZSaiYXA.net
漏れはnewのときたまの遅さの可能性に警鐘を鳴らしたからセフセフ、

1026:デフォルトの名無しさん
20/02/17 23:06:03 HZSaiYXA.net
やっぱnew/deleteのレイテンシーを設計に乗せるには非ページプールメモリにアロケートするべきですよねー

1027:デフォルトの名無しさん
20/02/17 23:19:17 sgjaAMaL.net
なんかスレ止めてたら悪いから書いておくよ
ひとつは17からallocatorがdeprecatedになったstd::functionね
これは結構知られてるばずだ
定期的にこれ濫用する人が現れるんだけど中身理解してから使うか判断しろと職場では言っている代物

もうひとつあげるなら、
処理系によってかなり違うかもだけどstd::threadも中でこっそり内部クラスをnewしてるはず
ただスレッド間で引数を引き渡すためのものでサイズは小さいしスレッド作るコストの方が遥かにでかいから問題にはなりにくい

他にもあるけどとりあえずこんなもんで

1028:デフォルトの名無しさん
20/02/17 23:46:06.60 HZSaiYXA.net
std::functionを使わないと1 bitもプログラムが書けなくなった漏れガイル、
クロージャをいちいちクラス定義から手で書く日々に戻るのはいやじゃー

1029:デフォルトの名無しさん
20/02/17 23:54:13.03 HCTe1ZqE.net
1000なら>>986, >>991-992が土下座

1030:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 17日 3時間 0分 7秒

1031:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch