- 1 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 09:54:14 ]
- コンパイラ性能、コンパイルオプション、コードの最適化などについて語りましょう。
主に速度面の最適化を中心としますが、サイズなどの最適化もどうぞ。 なお、OS、CPU、コンパイラなどは限定しません 前スレ C、C++の最適化について語るスレ pc11.2ch.net/test/read.cgi/tech/1084676298/
- 231 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 17:20:17 ]
- 場合による
- 232 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:43:45 ]
- >>230
読み込みのみなら気にしなくていい 書き込みが絡む場合はスレッドセーフではない 手軽にスレッドセーフにしてくれる拡張構文も最近はあったりする (スレッドローカルストレージ)
- 233 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 08:05:03 ]
- >>232
初期化のときに問題にならない?
- 234 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 08:42:09 ]
- static変数の初期化より先にどこかでスレッド走らせ始めるつもりか
- 235 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 10:03:36 ]
- お前ら Binary Hacks の Hack 37 読むといいですよ
- 236 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 11:48:44 ]
- 今日Binary Hacks買ってきたにょー
予定つまってて2週間ほど読めないけど…
- 237 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 12:42:42 ]
- Linux系の本だと思ってスルーしてたけど、Windowsプログラミングにはどう?
- 238 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 16:04:29 ]
- かったはいいがぱらぱらめくっただけな自分は
やはりLinuxの本という印象。 Windowsしかまともに開発してないから あんまり楽しめなかった。
- 239 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:45:13 ]
- mallocダメ絶対な俺としてはスタック領域の調べ方Windows版が載ってただけで大満足
- 240 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:21:09 ]
- >>238
ありがとう。やっぱりそうか。
- 241 名前:デフォルトの名無しさん [2007/12/24(月) 08:55:43 ]
- age
- 242 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 12:22:50 ]
- newの遅さはどうしてる〜?
- 243 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 12:26:18 ]
- pool allocator使う
- 244 名前:デフォルトの名無しさん [2008/01/01(火) 19:54:17 ]
- あげ
- 245 名前:デフォルトの名無しさん [2008/01/14(月) 22:48:15 ]
- V(・∀・)V
- 246 名前:デフォルトの名無しさん [2008/01/22(火) 15:39:00 ]
- 割る2、掛ける2はシフトを使うと速い。
これ豆知識な。
- 247 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 15:52:07 ]
- 俺のCPUは割り算よりシフトの方が時間かかるんだけど
- 248 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 16:53:00 ]
- 最近のCPUではよくあることだな。
「1足すならaddよりincの方が速い」とかも同様。 俺の様なジジイの豆知識はほとんど役に立たん。
- 249 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 16:57:45 ]
- C/C++の範囲では、どっちがいいかなんてコンパイラの最適化に任せるのが正解。
- 250 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:22:31 ]
- いや、それを言っちゃうとこのスレ終わっちゃう。
つうか、だから伸びないんだなorz VCの吐くコードとか見てると感動するけど、時々「?」と感じるときがあるのも事実。 そういうのを減らすための豆知識とか、誰か披露してくれまいか。
- 251 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:51:09 ]
- それじゃ、「?」と感じたものを挙げてみてくれ。可能な限り、説明しようじゃないか。
- 252 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:23:21 ]
- inc は使うなというのは正式な資料に書いてあるが
>俺のCPUは割り算よりシフトの方が時間かかるんだけど こういうCPUは寡聞にして知らない.教えてくれないか?
- 253 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:27:30 ]
- 割り算は普通遅いからね。
- 254 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:34:13 ]
- 定数の乗除は最適化してくれるんじゃないの?
- 255 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:42:07 ]
- CPU はって言ってるからには
アセンブリで比較してると信じたいのだが・・・ C でやってる悪寒
- 256 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:18:22 ]
- まあ、バレルシフタ持ってない CPU だと、それなりに時間かかるからな。
3ビットのシフトの方が÷2より時間がかかる と言う詭弁は可能かと。
- 257 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 03:30:02 ]
- 割り算を逆数近似で計算してればあり得る?
まともな割り算は必ずシフタ使うから普通はないが.
- 258 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:02:42 ]
- デバッグで実行しての実測なんて意味がない、ただただ使う側のPCスペックと環境だけ
- 259 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:54:31 ]
- 何の話だ?
- 260 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 00:01:50 ]
- foreachの最適化は無理無理無理無理いいいいいいいいいいいいいいいいいい
- 261 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 11:22:17 ]
- PenrynだとRadix-16のおかげでdivのクロック数は最小で6
昔とはだいぶ違うよ
- 262 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:52:45 ]
- >>261
あれ、14じゃね?
- 263 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 12:42:52 ]
- if((a == 1) && (b == 1)){ asdf; } という処理は論理積 && を使っている以上、分岐が2つある
if(a == 1){ if(b == 1){ asdf } } に等しくて、これだと条件分岐が多くその分投機予想も外れる可能性があがるので if((a == 1) & (b == 1)){ asdf; } にすべきだ、っていう話を聞いたんですが、これは本当なんでしょうか? もしくは、そんな事は演算子がオーバーロードされていない限り明確に分かりきった事なので あらかじめコンパイラが論理積を (a == 1) & (a == 1) と同等の処理に最適化してくれたりとかはないんでしょうか?
- 264 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 12:57:59 ]
- >>263
実験してみた。最適化できるみたい。 $ cat test.c void g(void); void f(int a, int b) { if ((a == 1) && (b == 1)) { g(); } } $ gcc --version gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125) Copyright (C) 2004 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. $ gcc -S -o - -Os test.c .file "test.c" .text .globl _f .def _f; .scl 2; .type 32; .endef _f: pushl %ebp movl %esp, %ebp cmpl $1, 8(%ebp) sete %al xorl %edx, %edx cmpl $1, 12(%ebp) sete %dl testl %eax, %edx je L1 popl %ebp jmp _g L1: popl %ebp ret .def _g; .scl 3; .type 32; .endef
- 265 名前:264 mailto:sage [2008/01/29(火) 13:01:03 ]
- >>263
使っているコンパイラでは結果が違うかもしれない。そういう環境で、且つ、実際に そのレベルの高速化が必要ならビット AND への置き換えもありうる。ただしその場合は しっかりコメントで実験結果に基づくコードだと添えておく必要があるだろうね。
- 266 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 13:11:04 ]
- なるほど、ありがとうございます。
- 267 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:35:23 ]
- 実装が長くても1度しか呼ばれない関数って、普通最適化でインライン展開されますよね?
- 268 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:41:11 ]
- 試してみれば?
- 269 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:46:26 ]
- インライン展開されます
- 270 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:46:55 ]
- コンパイラによってはインライン関数がちゃんと展開できたか教えてくれるコンパイルオプションがあるよ
gccの話だけど
- 271 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 20:47:27 ]
- ごめんなさい忘れてください
- 272 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:23:04 ]
- 同じ内容の関数を複数用意して使い分ける意味ってあるんでしょうか?
- 273 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:21:21 ]
- >>272
唐突に質問されても何を聞きたいのか判りませんが。 同じ内容でも型が違う場合はC++ではテンプレート関数で一つで済ませることもできますが、 Cではできません。その辺りの話でしょうか?
- 274 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:30:48 ]
- >>273
そうではなく、 void foo1(int hoge){}; void foo2(int hoge){}; void foo3(int hoge){}; 中の処理も全く同一な関数です オーバーロードだとかそういうのでも全くないです
- 275 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:35:21 ]
- >>274
別に意味なんてないと思うが。訳が分からん。 typedef void (*func_t)(int); とやっておいて、どこかでfunc_tの変数を宣言してそれらを代入し、 fptr1 = foo1; fptr2 = foo2; if(fptr1 == fptr 2){ ... }else{ .. } として、処理は同じだけど違うものとして動作させたいと言うくらいしか思いつかないな。 意味があるかないか、どちらにしろそのソースコードを書いた人に直接訊いてみれば良い。
- 276 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:38:01 ]
- ただのアホな作りなのか、後の仕変に対応するための措置なのか見極める必要はある。
現状で言えばまとめてしまって構わないとは思うが。
- 277 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 14:49:44 ]
- I キャッシュの関係で、そういうのを最適化のために使えるケースというのはあった。リンカスクリプトも直す必要があるが。
多分違うケースなんだろうけど。
- 278 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:56:47 ]
- >>272
目的があれば意味があるんじゃないの?
- 279 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 19:57:35 ]
- string::size と string::length は全く同じメソッドだな。
文字列としては length という言葉を使う方がしっくりくるが、 コンテナとしての要件を満たすには size がないと困る。 なら両方作っちゃえって感じなんだろう。 こういう例ならありうると思う。
- 280 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:08:27 ]
- ファイルやフォルダをコピーしたり消したり作ったり、.NETで言うFileInfoクラスやDirectoryInfoクラスを
自分で実装するのは.NETに頼らなくて済む、以外のメリットないのかなぁ・・ このまま行くと.net病になりそうだ・・・ どうすりゃ効率いいかなぁ・・
- 281 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:18:24 ]
- 既存のクラス使う方が仕事の効率は良さそうだな。
- 282 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:18:25 ]
- 微妙に誤爆・・だけど平気かぎりぎり・・・いやごめんなさい
- 283 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:20:15 ]
- うひょー、れすがついちゃってた
>>281 Windows専用なら.NET全然良いかな、と思う でも趣味でやってる分には微妙に素直に割り切れないというかなんというか
- 284 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:24:31 ]
- というかそのFileInfoクラスだけならともかくさ、他にも色々必要だろ
言い過ぎの誇張表現になるけどそのすべてにおいてMS開発陣の書いたコード以上のものを書けるのかってことになる つまり.NETを1箇所以上で使うなら出来得る限り.NETで実装を
- 285 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:25:36 ]
- 効率ってのが速度を表すなら、全ての.NETコードは効率が悪いことになる。
- 286 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:26:18 ]
- 個人でやる分には安心感はあるけどねえ
- 287 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:26:47 ]
- >>279
lengthはsizeを呼ぶだけとかってなら、アリだね。 極力重複コードは避けるべき。
- 288 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 20:28:45 ]
- うあー、こんなんにレスつけてくれてありがとうございます
>>284 コードの数割は.NETのを利用したもので、主要な処理の部分だけちょっとがんばって 頼らず書こうかなと思ってたんだけどそのままにしときます
- 289 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 21:15:21 ]
- まあ.NETのあるクラスのすべてのメソッドをフル活用する状況ならいんじゃないかねえ
- 290 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:50:44 ]
- >>287
重複コードは inline 関数のおかげで簡単に避けられるね。 Ruby とか同じ動作の別名関数が用意されてる事が多い。 A という言語では a という名前で、 B という言語では b という名前な関数を Ruby に作る時には、 a と b の両方の名前を採用しちゃえ、みたいな。
- 291 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:04:15 ]
- そういえばC++には識別子のalias機能がないんだね。
- 292 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:12:28 ]
- で、でふ
- 293 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:13:17 ]
- 変数は参照で、
関数はインライン関数で、 型は typedef で、 名前空間は namespace a = b; で、 クラステンプレートは継承でそれぞれ可能ではある。 ただ、インライン関数使うのと、 クラステンプレートを継承するのとは、 結構面倒臭い。
- 294 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:16:11 ]
- このスレ地味に常駐多くないかい
- 295 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 12:27:22 ]
- C++0xであるかも知れないが、テンプレートのエイリアスは作れないよな。
typedef std::vector my_vector; みたいなの。>>293にも書いてある継承は可能ってレベルではない。 コンストラクタやらオペレータやら全部知っていて、尚かつ書かないといけない。
- 296 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 12:33:01 ]
- オペレータは必要ないと思う。
コンストラクタは作らないとダメだけど。
- 297 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 13:55:01 ]
- >>296これで例として成立してるか自身無いけど。
継承しちゃうとoperatorの返す型と継承した型が異なっちゃうからうまくいかない。 struct c { int v; c operator+(int n) { c t; t.v = v + n; return t; } }; struct d:public c {}; main() { d e, f; f + 1; // OK e = f; // OK e = f + 1; // Error }
- 298 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 14:01:54 ]
- >>297
ああ、なるほど。 というか、色んな状況を考えると継承では不完全なのか。
- 299 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 16:10:51 ]
- if(hoge.piyo == hogehoge.piyo)
hoge.piyo = hoge.piyo & ~sym.att; こんなのはこれ以上どうにもなりませんよね?
- 300 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:04:15 ]
- 分岐は無くせるけどね。
hoge.piyo = ~(sym.att & -(hoge.piyo==hogehoge.piyo) & hoge.piyo; x86でPentiumPro以降に限定するなら hoge.piyo = ~(hoge.piyo == hogehoge.piyo ? sym.att : 0) & hoge.piyo; はCMOVになる可能性がある。 SSEで書けば次のようにも出来る。 // hoge.piyo = ~(sym.att & -(hoge.piyo==hogehoge.piyo) & hoge.piyo; hige.piyo = _mm_andnot_ps(_mm_and_ps(sym.att, _mm_cmpeq_ps(hoge.piyo, hogehoge.piyo)), hoge.piyo); ただSIMD以外は保守性が悪くなるだけであんま効果無いと思う。 実測した方がいい。
- 301 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 20:29:28 ]
- >>300
なるほど・・-ってのを初めてみたんで調べてきます、ありがとうございます
- 302 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 23:44:47 ]
- ANSI Cの仕様ではA==Bが真なら1になるから-1(全ビットON)にしてマスク作ってるだけだよ。
x86なら分岐せずにSETcc + NEGにコンパイルされるはず。
- 303 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 00:57:10 ]
- 偉そうな割には右括弧が足りないぞ。
- 304 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 01:00:29 ]
- どの道やってること同じではないのか
- 305 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:36:34 ]
- まぁ、>299程度ならコンパイラに任せて実測してみてからだな。
CMOVになったところで大した差は出ないだろ。
- 306 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:37:59 ]
- Windows環境でのファイルなんかのコピーを大きくする手段ってないですよね・・
どのみちOSの機能頼りなわけだから
- 307 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:39:36 ]
- コピーしたつもりがおっきくなっちゃうのかー。そりゃねーな。
- 308 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:41:01 ]
- すんません、ガチで寝ぼけてる
早くする、ですほんとごめんなさいごめんなさいごえmんあい
- 309 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:43:14 ]
- 早くする手段ならいくらでもあるだろ。
速いかどうかは知らんが。
- 310 名前:デフォルトの名無しさん [2008/02/04(月) 13:48:24 ]
- ストライピング
コードレベルの最適化とは無縁だが。
- 311 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:54:21 ]
- 高速化っていうんだから速くか
ストライピング、調べてきました それだと送り先が2箇所なのかな・・・ コピー元も先も1箇所なんです というかコードレベルって話じゃないですよね、把握しました
- 312 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:55:51 ]
- 単純にバッファをいじるとか
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet /Control/Session Manager/Memory Management ここの数値を というか普通こんなことしねえよな・・
- 313 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 13:58:42 ]
- >>311
実際問題、ファイルアクセスの速度はデバイス側の事情で決まってしまう。 と言うことで、単純に速くする方法はない。 寧ろ、本当にファイルコピーの時間が問題なのか、例えばレスポンスが問題なのか、検討した方がいい。
- 314 名前:312 mailto:sage [2008/02/04(月) 13:59:50 ]
- うちの環境だと10Mにしてるけどよく考えたら馬鹿すぎる方法だ
確か再起動必要だった気がするし
- 315 名前:311 mailto:sage [2008/02/04(月) 14:12:46 ]
- >>313
最近、.NETFrameworkというものを触ってみまして 色々試してみようとコンソールなんですがファイルをコピー(バックアップ?)する ものを作ってみたんですが、そこでコピー自体速くならないかなあと思った次第です >>312>>314 再起動必要じゃあれですね・・・ Win32APIとかってのもWindowsの機能を使うやつだって聞いたんで それでファイルのコピーするとこを実装すれば速いんだろうか
- 316 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 14:20:28 ]
- >>315
先ず、.Netって時点でスレ違い。 次に、ファイルコピー自体の速度はデバイス依存だ。 .Netでファイルコピーしていて遅いと思うのなら、コードレベルの最適化ではなく.Netの使い方の問題だ。
- 317 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 14:23:52 ]
- C/C++でファイルコピーなんてファイル開いて読み取って書き込むの繰り返しなんだからさ
たぶん.NETでもAPIでも使った方が良い ということでもうそれで完成でいいじゃない
- 318 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:14:23 ]
- >>311
Windows 限定なら FastCopy.exe のソースとか見ればいいんじゃないか。
- 319 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 22:28:22 ]
- オープンソースとか見ると趣味人でもない限りC/C++やWinAPIを使うのってことがどういうことかわかっちゃうよな
- 320 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:24:12 ]
- 俺は、お前の言ってることがどういうことかわからん。
- 321 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:30:10 ]
- 開発効率と現状溢れかえってるPCのスペックの話だろうか
まあ例外は確かに往々にあるけど例外は圧倒的にマイノリティ うちも業務じゃC/C++なんて使わないわ
- 322 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:05:18 ]
- 何言ってんだこいつ。
Webでもやってろ。
- 323 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:09:41 ]
- webは全然分類違うだろ、どこのアマグラマだよ
- 324 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:10:33 ]
- 業務でC++主流だと思ってるのか・・
- 325 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:14:07 ]
- マジョリティマイノリティでわけちゃうとなぁ
まあ業務になると大抵どっちかだけ向いてればいいんだが
- 326 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:46:26 ]
- スレチ自重
- 327 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:32:36 ]
- ここに適当なコード張ってみんなで最適化とか考えたけど適当な長さのコードが見当たらなくて10分で諦めた
- 328 名前:デフォルトの名無しさん [2008/02/07(木) 16:30:40 ]
- AMD向けの最適化に関するマニュアルはAMDのホームページにありますが、インテル用のはどこかでダウンロードできなうのでしょうか?
- 329 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:42:36 ]
- >>328
www.intel.co.jp/jp/download/index.htm
- 330 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:32:52 ]
- >>328
ttp://www.agner.org/optimize/
- 331 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 03:01:18 ]
- おいお前ら、俺のこいつをみてどう思う?
class Vector3 { public: union { struct {float x, y, z;} float data[3]; }; Vector3() {} Vector3(float ix, float iy, float iz) { x = ix; y = iy; z = iz; } }; inline Vector3 operator+(const Vector3 & va, const Vector3 & vb) { return Vector3(va.x + vb.x, va.y + vb.y, va.z + vb.z); } ベクトル化されるかな
|

|