○○とゲームプログラミング Rev 3.0.0
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
04/02/01 20:56ID:UHX0VJ3UOOも含め、ゲームプログラムの制作に関わる様々なトピックを
語りましょう。
単なるC++でのクラスの書き方から、設計やパターン、制作手法
まで守備範囲広し。
過去スレ:
OOとゲームプログラミング Role2
http://pc2.2ch.net/test/read.cgi/gamedev/1067458051/
OOとゲームプログラミング
http://pc2.2ch.net/test/read.cgi/gamedev/1005144931/
0343名前は開発中のものです。
04/03/29 16:31ID:bi8ippWh>プログラマの能力って奴ですか?
煽りの能力です(文章の荒れ具合を見るともしかしたら天然なのかも知れないけど)。
0344名前は開発中のものです。
04/03/29 17:28ID:I5CAVnSY>予測として余分にリザーブしてある領域を超えると、とてつもない
>メモリー帯域の浪費が起こる。
解決方法は、
>かといって何かいい手があるかというと”?”ですけど
そして
>最初っからないほうが潔いんじゃないかって考えたりします。
という、とんちんかんな結論を出すと。
どうしても必要な場合に、いちいち再確保と転送を自分で書くよりは、
テンプレートを使って自動的にやってくれた方が楽でしょ?
それだけの話なのに、いったい何が言いたいのか、
>論点
がさっぱり見えない。
0345名前は開発中のものです。
04/03/29 17:37ID:I5CAVnSYlistを使うと断片化が起こる。
かといって何かいい手があるかというと”?”ですけど
だったら最初から使わない方が潔いのでは?
論点はこれでOK?
0346名前は開発中のものです。
04/03/29 17:58ID:bi8ippWh>iteratorもキモイですね。[]オペレーターもキモイです。
>かといってキモさを払拭するために、ジェネリックにする事が存在理由になっている
>スパゲッティコードを読むきはおきません。それは怠惰がゆえかもしれませんが、
つまり愚痴が言いたいだけ、と。
0347名前は開発中のものです。
04/03/29 19:24ID:htU9rKwG>だったら最初から使わない方が潔いのでは?
そうそれを言ってんの。やっと言っている事を判ってくれたね。
リストなんかだったらさ、
typedef struct _tagWhatever
{
struct _tagWhatever* next;
struct _tagWhatever* prev;
...
public:
void insert( _tagWhatever* pElem );
void remove( _tagWhatever* pElem );
...
} whatever;
でいいわけさ。
別にSTLを否定しているわけでもないよ。
ただ、そのヒープの原理上、どうしてもSTLの利点が生ききらない
よなって愚痴っているだけ。
それを、「設計上の問題をSTLの問題に摩り替えている」とかいうから
なんなん?って思うわけよ。
0348名前は開発中のものです。
04/03/29 19:41ID:3c6HG4oCおまえの考えている「STLの利点」って何よ?
0349名前は開発中のものです。
04/03/29 20:17ID:I5CAVnSY>typedef struct _tagWhatever
断片化が解決されるわけでもなく、手間がかかるようにしか思えないのに、
これを型ごとに毎回書く利点は?
0350名前は開発中のものです。
04/03/29 20:50ID:htU9rKwG>断片化が解決されるわけでもなく
基本的には、そうだ(文脈的に無視しちゃっていいが、厳密には、
STLでも一要素単位でヒープ領域が割り当てられるわけじゃない)。
>これを型ごとに毎回書く利点は?
型は関係ないよね。もし問題にするなら汎用コンテナの問題を挙げてくれよ。
templete = STLじゃないよ?わかってんのかな?
Listに限った、コンテナの再利用でいうなら、これでいいわけ。
templete < typename T >
class CList
{
CList* next;
CList* prev;
T CONTAINER;
public:
void insert(...);
void remove(...);
};
ってやりゃいい。
0351名前は開発中のものです。
04/03/29 20:53ID:I5CAVnSYそれでわざわざ自分で実装する利点の説明は?
0352名前は開発中のものです。
04/03/29 21:17ID:htU9rKwG>それでわざわざ自分で実装する利点の説明は?
仕組みを理解している人間だったら、そんなの訊くまでもないでしょ。
STLはvector, list, setなどのデータ構造間の汎用性を追求している
がための複雑さとオーバーへッドがある。
って、1から10まで書かんとわからんか?
っていうか、確かに煽り半分で書いた事は書いたが、それは
プロが出てきて有意義な話ができるかなと期待したんであって、
こんな意味のない話をしたかったわけじゃないんですが。
もうやめましょうこれ。時間の無駄です。
0353名前は開発中のものです。
04/03/29 21:23ID:izxLwDgdお願いですから、まだ逃げないでください。
0354名前は開発中のものです。
04/03/29 21:29ID:I5CAVnSY独自のアロケーターを内蔵しているSTLに、
>>350のソースで勝ち目があるようには思えない。
コードの質を落とした車輪の再発明なら、
>もうやめましょうこれ。時間の無駄です。
確かにその通り。
0355名前は開発中のものです。
04/03/29 21:41ID:BJ/4An5bツールならがんがん使うんだが・・
0356名前は開発中のものです。
04/03/29 21:48ID:izxLwDgdデータ量の上限を設定して、想定した範囲内に収めるように作ると思います。
0357名前は開発中のものです。
04/03/29 22:01ID:xV6Fcr2Y0358名前は開発中のものです。
04/03/29 22:30ID:htU9rKwGちょっとはSTLのコードを読んでからモノをいおう。
>>354
文脈考えてね。「型ごとにlistクラス」つくんのかよって言われたから、
テンプレートつかってlistコンテナをこうやって組むんだよって
サンプルを書いたんだろうが。
>>354
>独自のアロケーターを内蔵している
newオペレーターオーバーライドだろ。
そんなの実装するの当たり前じゃん。
その他、find,sort等色々なメソッドも実装するよって、こんなとこに
一々書いてられるかボケ。
あのさ、おまえら人が掲示板で具体的に説明するために
ちょろっと書いた(コピペですらないよ)サンプルコードに
いちいちうるさいんだよ。
>>357
きみとなら仕事を一緒にやっていけそうだ。
0359名前は開発中のものです。
04/03/29 22:39ID:I5CAVnSYつまり結局はSTL同様、複雑になるわけなんだけど、
その車輪の再発名でSTLには無いオーバーヘッドを回避する方策は?
0360名前は開発中のものです。
04/03/29 22:55ID:izxLwDgd先生!、オーバーロードとオーバーライドの区別はついてますか?
0361名前は開発中のものです。
04/03/29 23:16ID:htU9rKwG>>341
をよめ。何回もナンカイモナンカイモオナジゴトヲイワセルナ。
>>360
タマニツカネーンダヨ。っていうか、まぁ英文C++本でも"overload"になっているがだな、
"override"のほうが現象を的確に表している。"overload"は不正確だ。
英語が堪能なオレにとってはどうしても自然な方を使ってしまうんだな。
0362名前は開発中のものです。
04/03/29 23:20ID:htU9rKwGオレのいっているオーバーヘッドは、メモリ帯域の無駄の話じゃない。
データ構造間の汎用性を持たせたことによるメソッドのオーバーヘッドの話。
0363名前は開発中のものです。
04/03/29 23:26ID:I5CAVnSYつまり、
>かといって何かいい手があるかというと”?”ですけど
何も解決しないまま、車輪の再発明だけ行うわけなのか。
それが潔いと思えるようになるのは、一生かけても難しい。
0364名前は開発中のものです。
04/03/29 23:29ID:izxLwDgd>英語が堪能なオレにとってはどうしても自然な方を使ってしまうんだな。
先生!、かなり苦しいです。
0365名前は開発中のものです。
04/03/29 23:33ID:BJ/4An5bゲームでは再利用可能なコンテナが確かに必要だが、
STLの設計はゲームに最適ではないだけの話じゃないか
ゲーム向け俺コンテナを持ち寄って
boostに寄贈ぐらいすればこのスレも役に立ったといえるな
0366名前は開発中のものです。
04/03/30 00:03ID:fcRSAwJm潔いの話題違い。
メモリバンド幅の話と、メソッドのオーバーヘッドの話がごっちゃになってるよ。
>>364
あのな、overloadとoverrideを辞書で調べてみ。
http://www.infoseek.co.jp
>>365
>馬鹿だなあお前ら、
>ゲームでは再利用可能なコンテナが確かに必要だが、
>STLの設計はゲームに最適ではないだけの話じゃないか
まぁ、そういうことだな。
0367名前は開発中のものです。
04/03/30 00:21ID:F14WhfVI0368名前は開発中のものです。
04/03/30 00:25ID:rluXyNAm何の解決方法も示めさず、言い訳で逃げ回り、
用語の誤用に関しても、素直に間違いを認めずまた言い訳。
データの汎用性のオーバーヘッドを問題にしても、
型ごとに書くのかと聞かれるとその時だけサンプルはテンプレート。
複雑さを問題にしても、機能の面を指摘されると、
STL同様の機能を実装するという。
既存のものに対して、利点は特にないけれど、とにかく自分で実装。
滅茶苦茶で突っ込みきれない。
0369名前は開発中のものです。
04/03/30 00:33ID:+WlTCBa00370名前は開発中のものです。
04/03/30 00:48ID:fcRSAwJm>結局のところ、「メソッドのオーバーヘッド」に関しても、
何の解決方法も示めさず、
メモリー最配置の時に発生するメモリバンドの無駄はどうにもならないが、
「メソッドのオーバーヘッド」に関しては、
「STLはvector, list, setなどのデータ構造間の汎用性を追求している
がための複雑さとオーバーへッドがある。」って問題提起し、
ゲーム用に贅肉を削ぎ落としたバランスの取れたコンテナをちょろっと
書けばメソッドのオーバーヘッドは軽減できるっていってんだよ。
>用語の誤用に関しても、素直に間違いを認めずまた言い訳。
Override 誤用じゃないよ。適切な英語だ。
>利点は特にないけれど
あるよ。ゲームにとっては重要な利点だよ。
シロートとは付きあいきれん。
0371名前は開発中のものです。
04/03/30 00:51ID:fcRSAwJmtry catch例外うざい。
マクロで↓みたいな例外処理いれてる。
DBG_ASSERT( bool bEval, TCHAR* szMessage, UINT uErrorType );
0372名前は開発中のものです。
04/03/30 00:51ID:F14WhfVIそれは興味深いですね。具体例をいただけますか?
0373名前は開発中のものです。
04/03/30 00:54ID:tIdFGMagテストプログラムとかツールとかじゃなくて
本当に商品でSTL使ってるのか?
どこ製のSTL?
0374名前は開発中のものです。
04/03/30 01:00ID:F14WhfVISTLport。設定マクロをたくさん提供してくれるのでいいと思います。
例外発生時の挙動や、メモリ管理の設定もいろいろカスタマイズできます。
0375名前は開発中のものです。
04/03/30 01:00ID:sI1+31eE>Override 誤用じゃないよ。適切な英語だ。
え?この場合オーバーライドがC++的にも正しくね?
で、オレは最適でないのは承知の上で楽だから使ってるよ(別にキモイとかどうでもいいし)。
クリティカルな部分だけ特別に最適なのを作る(ちうのは普通の最適化戦略だが)。
なので、別に愚痴りたくは無いかな。
愚痴りたいのは、STL使わせてもバグ埋め込むし、かといって普通にリスト構造とか作ら
せてバグを埋め込んでしまう新人君(に使わせるためのSTL)。
Effective STLシリーズを読まなきゃ使い物にならないのが一番大きいオーバーヘッドだw
0376名前は開発中のものです。
04/03/30 01:06ID:X6VmrFA0トレースとか非常にうざいんだけど、何か良い方法ある?
0377名前は開発中のものです。
04/03/30 01:08ID:JHyHUQlW>Override 誤用じゃないよ。適切な英語だ。
まぁ、君の意見は正しいと思うよ。君の世界の中ではね・・・
コウヤッテSTL厨が出来上がっていくわけか。
アセンブラ厨の言ってた事とかわらんなぁ。
何かと言うと「俺が正しい」「俺は間違ってはいない」
ヤレヤレ棚
0378名前は開発中のものです。
04/03/30 01:15ID:OjGk+Cgx0379名前は開発中のものです。
04/03/30 01:20ID:fcRSAwJmなんで書き込む前に自分で調べないかな?これで最後ね。時間のムダだし。
例えば、vectorの[]オペレータ一つとっても
vector <int> vInt;
...
int& r = vInt[idx];
とやるだけで、このようにコードが実行される(読みにくいけど長すぎるので)。
まぁ自分で調べりゃ済む事だし。
reference operator[](size_type _Pos) { // subscript mutable sequence
return (*(begin() + _Pos));}
iterator begin(){ // return iterator for beginning of mutable sequence
return (iterator(_Myfirst));}
iterator(pointer _Ptr) : const_iterator(_Ptr) { // construct with pointer _Ptr }
const_iterator(_Tptr _Ptr) { // construct with pointer _Ptr
_Myptr = _Ptr; }
0380名前は開発中のものです。
04/03/30 01:20ID:fcRSAwJmiterator begin() { // return iterator for beginning of mutable sequence
return (iterator(_Myfirst)); }
reference operator[](size_type _Pos) { // subscript mutable sequence
return (*(begin() + _Pos));}
iterator operator+(difference_type _Off) const { // return this + integer
iterator _Tmp = *this; return (_Tmp += _Off); }
iterator& operator+=(difference_type _Off) { // increment by integer
this->_Myptr += _Off; return (*this); }
reference operator*() const { // return designated object
return ((reference)**(const_iterator *)this); }
const_reference operator*() const { // return designated object
return (*_Myptr); }
reference operator[](size_type _Pos) { // subscript mutable sequence
return (*(begin() + _Pos)); }
0381名前は開発中のものです。
04/03/30 01:20ID:fcRSAwJmreturn (iterator(_Myfirst)); }
iterator(pointer _Ptr): const_iterator(_Ptr) { // construct with pointer _Ptr }
const_iterator(_Tptr _Ptr) { // construct with pointer _Ptr
_Myptr = _Ptr; }
iterator(pointer _Ptr) : const_iterator(_Ptr) { // construct with pointer _Ptr }
iterator begin() { // return iterator for beginning of mutable sequence
return (iterator(_Myfirst)); }
reference operator[](size_type _Pos) { // subscript mutable sequence
return (*(begin() + _Pos)); }
iterator operator+(difference_type _Off) const { // return this + integer
iterator _Tmp = *this; return (_Tmp += _Off); }
iterator& operator+=(difference_type _Off) { // increment by integer
this->_Myptr += _Off; return (*this); }
reference operator*() const { // return designated object
return ((reference)**(const_iterator *)this); }
const_reference operator*() const { // return designated object
return (*_Myptr); }
以上。
0382名前は開発中のものです。
04/03/30 01:27ID:OjGk+Cgx0383名前は開発中のものです。
04/03/30 01:28ID:fcRSAwJm>で、オレは最適でないのは承知の上で楽だから使ってるよ(別にキモイとかどうでもいいし)。
>クリティカルな部分だけ特別に最適なのを作る(ちうのは普通の最適化戦略だが)。
だね。オレもそう。STLの問題点がわかってりゃ適材適所で使いこなせるってことだな。
0384名前は開発中のものです。
04/03/30 01:32ID:NFwNOG+Iマルチスレッドで使うとロックコードが入るだけ。
0385名前は開発中のものです。
04/03/30 01:35ID:OjGk+Cgxtemplateの利点のひとつだしね(メタプログラミングというのか?)
STLなんかも、もろコンパイラの最適化前提。
0386名前は開発中のものです。
04/03/30 01:37ID:fcRSAwJm自分で調べてみなって。上のCコードどおり最悪なことになっているから。
ちなみに普通の配列だったら4stateくらいで済む話です。
0387名前は開発中のものです。
04/03/30 01:39ID:OjGk+Cgxいや、調べてみていってるんだが。
最適化を掛けなきゃすごいことになったが、掛ければ配列と変わらなかったけど。
ちなみにgccの-O2で確認。
0388名前は開発中のものです。
04/03/30 01:42ID:F14WhfVIおつかれさまでした。
ちなみに、STLportのHEADでは、
reference operator[](size_type __n) { return *(begin() + __n); }
iterator begin() { return this->_M_start; }
_Tp* _M_start;
以上(@stlport/stl/_vector.h)でした。
そういうことなので、貼っていただいたモノはSTLのオーバーヘッドの具体例とはいえませんね。
おそらく、「中途半端な理解による誤解」でしょう。
STLportの使用をお勧めしますよ。
0389名前は開発中のものです。
04/03/30 02:45ID:fcRSAwJm>>385
>全部インラインになって最適化されるとかなり効率的なコードになるってのが
>templateの利点のひとつだしね(メタプログラミングというのか?)
templateの利点?実行コードの話だよね?
効率的なコードになるのはinlineの利点であって、templateとは関係ないが。
templateはむしろ、複数の実体が生まれるっていう副作用以外、コード効率への影響はない。
>>387
>掛ければ配列と変わらなかったけど。
それはありえないね。
>>388
それじゃまだ甘い。まず+オペレーター部分が抜けてるでしょ?
そして+オペレーターから更に続くわな。
その字面通りだったら、char型でもない限り、まともにアドレスとれないよ。
トレースしてみ、ほかにも呼ばれるものがいっぱいあるよ。
字面ほど単純じゃないのがSTL。
0390名前は開発中のものです。
04/03/30 02:52ID:JHyHUQlW>それはありえないね。
・・・こいつには何を言っても無駄かと。
久々に真性のヴァカを見たよ。
0391名前は開発中のものです。
04/03/30 03:09ID:F14WhfVIあーすいません。抜けてましたね。
typedef valute_type* iterator;
typedef valute_type& reference;
ということで、続く + も * も、共に組み込み演算子ですよ。
0392名前は開発中のものです。
04/03/30 03:22ID:TrwYR1M1えっと、Cの基本が全く分かってない人ですか?
0393名前は開発中のものです。
04/03/30 06:37ID:NUfc9Rms00000a1 00 00 00 00 mov eax, DWORD PTR ?idx@@3HA ; idx
000058b 0d 04 00 00
00 mov ecx, DWORD PTR ?vInt@@3V?$vector@HV?$allocator@H@std@@@std@@A+4
0000b8d 04 81 lea eax, DWORD PTR [ecx+eax*4]
; 15 :
0394名前は開発中のものです。
04/03/30 07:04ID:SghGZQph0395名前は開発中のものです。
04/03/30 07:29ID:rluXyNAm・間違えても言い訳はせず、素直に認めることは大切。
・あり得ないと決めつける前に、自分で確かめることも大切。
0396名前は開発中のものです。
04/03/30 09:44ID:DwcoFR6t0397名前は開発中のものです。
04/03/30 09:56ID:OjGk+Cgx>効率的なコードになるのはinlineの利点であって、templateとは関係ないが。
型の安全性を保ちつつマクロのようなことが出来るという意味で、両方だよ。
テンプレートメタプログラミングって聞いたこと無い?
(そして、そこがC++の汚さなわけだが。。。)
0398名前は開発中のものです。
04/03/30 13:17ID:NFwNOG+Iそのうちシンボルの長さの分非効率って言い出すからよろしく
0399名前は開発中のものです。
04/03/30 16:17ID:DlN5YGl10400名前は開発中のものです。
04/03/30 17:58ID:K6BdNsKiおまえら知らないかもしれなが、STLがサポートされてないCPPがアルンデスヨ。
0401名前は開発中のものです。
04/03/30 18:07ID:DJnJzXcX世の中には malloc も無い C コンパイラもあるが、
そこら辺、どうよ?
0402名前は開発中のものです。
04/03/30 21:00ID:OjGk+Cgx0403名前は開発中のものです。
04/03/30 21:02ID:HrX2ydbg0404名前は開発中のものです。
04/03/30 21:29ID:OjGk+Cgx・・・・あれ?
0405名前は開発中のものです。
04/03/30 22:01ID:se3a2dchlist map vector 程度だし、使ってるメソッドもごく一部。
それらを網羅するだけのテンプレートなら、自作してしまったほうが
なにかトラブルがあったときに対処しやすいかも。
パチンコ系の仕事だと、メモリ少ないし、C++は使えるけどSTLは
使えないなんて環境がザラなので、自作するですよ。
ま、昨今のPS2の3Dゲーが普通な世間についていけなくてスピンアウトした
負け組みな自分の意見など参考にならんかもしれんけど。
でも、ゲーム用途で使用するSTLのメソッドなんて、やはり片手で
数えれる程度なんではないでしょうかねぇ?
標準でSTLが添付されているなら迷わずそちら使うんですけど
0406名前は開発中のものです。
04/03/30 22:29ID:yJ2AWd9P0407名前は開発中のものです。
04/03/30 23:07ID:NFwNOG+I使う人間がどうか、どんなゲームを作るつもりなのかの方が何十倍も影響する
0408名前は開発中のものです。
04/03/30 23:30ID:OjGk+Cgx0409名前は開発中のものです。
04/03/30 23:53ID:S0+3h4vNみたいな見方しかしてない椰子がたくさんいるような気がするのは
俺だけなのだろうか
0410名前は開発中のものです。
04/03/31 00:27ID:TBla2Lpvぜひ、そうじゃないと言う意見を教えて欲しい。
実際のところコンテナ集程度の認識でしか使えていないので・・・
0411名前は開発中のものです。
04/03/31 00:54ID:M1X+QNGkでもって、状況判断して、標準・自前・使わないを使い分ける罠。
キモいiteratorの自作は結構楽しい罠。
0412名前は開発中のものです。
04/03/31 01:19ID:+fu0vwNy0413名前は開発中のものです。
04/03/31 01:24ID:Z6BWvJ0tそれらは全部コンテナと関連してる気がするが…
0414名前は開発中のものです。
04/03/31 01:30ID:Fr8obNGJただの配列とかにも適用できるんだから。
0415名前は開発中のものです。
04/03/31 01:57ID:a/n+QxhNbind系なんて見てらんない。
0416名前は開発中のものです。
04/03/31 06:07ID:FcWrDhbdプログラマさんの日記見てても、いちいちアセンブラに落として比較してたり、
よくそんなことやってるな、と
なんでもかんでも自作したり、ミイラ取りがよくミイラにならないか不思議です。
PCだと、軽くプロファイルとって大抵はそのまま終了だからなー
このスレみてると自分はなんて恵まれてるのかと思えてくるよ
0417名前は開発中のものです。
04/03/31 07:52ID:MuVgpOUOSTLはただのコンテナ集ではない
データ構造とアルゴリズムの汎用化を実現した(正確には目指した)ライブラリと捉えるべき
0418名前は開発中のものです。
04/03/31 09:07ID:y4QIV3kNでも、使いときの認識はコンテナ集なんでしょ?
0419名前は開発中のものです。
04/03/31 09:43ID:MuVgpOUOわかってない子だね
STLのアルゴリズムは、STLに含まれてる標準コンテナじゃなくても
自作のコンテナや、プリミティブな配列にも適用出来るんだよ
自分の考えでは
狭義のSTL: データ構造・アルゴリズムなどを含む標準「ライブラリ」
広義のSTL: 汎用的なデータ構造・アルゴリズムを使う際の「プロトコル」
ちょっと無理あるかもしれんガナ
0420名前は開発中のものです。
04/03/31 09:53ID:OpdTWfT0俺もPCだけだけど、どんなC/C++コード書けばどんなアセンブリコードが出てくるかは
だいたい把握しとくもんだと思うけど。
>>379見てちゃんと配列同様のコードに落ちるとか予測できるくらいにはさ。
別に四六時中アセンブリ出力眺めるわけじゃなし、ちょっと地ならししとくだけで、
リーズナブルなコードを吐くC++コードを自信を持って書けるんだから。
プロファイル取って遅かったら原因は100%アルゴリズムなわけだし。
0421名前は開発中のものです。
04/03/31 10:26ID:uLEtiF6X>>>379見てちゃんと配列同様のコードに落ちるとか予測できるくらいにはさ。
>>379って、オプティマイザで本当に、>>393になるの?
それはそれで凄いコードだよね。
それはいいとして、
The insertion (called inline expansion or inlining) occurs only if
the compiler's cost/benefit analysis show it to be profitable.
Inline expansion alleviates the function-call overhead at the
potential cost of larger code size.
ってあるように、コンパイラのコスト/利益 分析次第で展開もされる
こともされないこともあるってことで、完全に処理系(オプティマイザ
オプションも含め)依存だよね?
もしコンパイラがインライン展開がコストに合わないと判断すれば、
>>379になっちゃうんだよね?
0422名前は開発中のものです。
04/03/31 13:31ID:tl4psRQXSTLでダメだったら自作ってのが一番無難な流れなんだろう。
つーかSTLっつーかテンプレート使えないCPPが(略
0423名前は開発中のものです。
04/03/31 14:03ID:4g/JLZH/型があっていさえすれば相手はコンテナである必要はないよ
0424名前は開発中のものです。
04/03/31 14:05ID:ympu7JaOふつーにやってくれる罠。
VC++のthiscallでは、thisポインタはECXに保持されるのだが
昔それを知らないで、「mov eax, this」と
eaxにthisポインタを持たせたプログラムを書いたことがあるが
最適化で見事にeaxが全部ecxにすげ替えられてた。
0425名前は開発中のものです。
04/03/31 14:48ID:UG6lMDIiどっちにしてもそれで設計が変わることはないし
別に何が便利になるわけでもないんでしょ?
ささいな問題じゃん。
0426名前は開発中のものです。
04/03/31 15:49ID:/9tI2d5Jbeginとendでsortするくらいならいいけどさ…。
0427名前は開発中のものです。
04/03/31 17:03ID:tl4psRQXMSのコンパイラは最高峰だろ・・・。gccの10倍はがんばってる。
0428名前は開発中のものです。
04/03/31 17:56ID:6I5K9MaL疑う前に試してみなさいって。あんなもんがちゃんと最適化されないコンパイラあったら
俺はベンダに殴りこみかけるぞ。マジで。
0429名前は開発中のものです。
04/03/31 18:27ID:uLEtiF6Xそうかぁ。オレのは.NET Standardなもんで、オプティマイザーを
かけられない。なんかいじるとオプティマイザーをアンロック
したりできないかな?やっぱ安物買いの銭失いだったか・・・。
0430名前は開発中のものです。
04/03/31 19:46ID:xfT1ucaDまぁ、今のCPU性能ならよっぽど変なことやら無い限り問題ないんじゃね?
問題が出てから買い換えても遅くない罠。独自実装で最適化でもいいけど。
・・・いや、もし学生なら安いんだから買い換えとくべし。
0431名前は開発中のものです。
04/03/31 20:26ID:cW5bYV1S試すだけならGCCでもいいんじゃないかと。
0432名前は開発中のものです。
04/03/31 20:27ID:Fr8obNGJ0433名前は開発中のものです。
04/03/31 21:10ID:zAAx97UW大局が分らないと出来ない最適化や、
作った人間には分るがコードからは分らない種の最適化以外は
ほぼ限界までやってくれる。
それに引き換えミップスは・・・・はぅ〜
0434名前は開発中のものです。
04/04/02 12:29ID:2mBUdLBhMIPS系でgccの最適化マズーとか思うのも、使ってるgccが古いせいか。
枯れたハード使ってるんだけど、メーカーのサポートも枯れてるんだよね・・・。
ライブラリリコンパイルすればちょっと速くなったりするんだろうなぁ。
0435名前は開発中のものです。
04/04/02 15:27ID:XwPQLthN0436名前は開発中のものです。
04/04/02 16:13ID:mDXRLNzu0437名前は開発中のものです。
04/04/02 22:26ID:XwPQLthN0438とむ ◆0MTMwDpCZo
04/04/03 00:46ID:+YdMve5N0439名前は開発中のものです。
04/04/03 14:43ID:JoOhSfAZ0440名前は開発中のものです。
04/04/03 16:08ID:cZ8XjzeD0441名前は開発中のものです。
04/04/03 19:50ID:JoOhSfAZコテが出たからとりあえず叩かないと。
0442名前は開発中のものです。
04/04/04 12:22ID:fUh7k35dマチクタビレタ〜
☆ チン 〃 Λ_Λ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < 次の話題まだ〜?
\_/⊂ ⊂_ ) \_____________
/ ̄ ̄ ̄ ̄ ̄ ̄ /|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 愛媛みかん |/
■ このスレッドは過去ログ倉庫に格納されています