1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
93: 名前は開発中のものです。 [sage] 2010/09/18(土) 01:45:54 ID:ZJvrb5gA >>92 >ベクトル関係もクラス化する最終手段に挑戦してみようと思います。 >>87は自分で書いててよく分かってないみたいだけど、classとstructは根本的には同じもの struct Vector3{ Vector3(float x_, float y_, float z_): x(x_), y(y_), z(z_){} float x,y,z; }; void main(){ Vector3 a(1,2,3); cout << a.x << " : " << a.y << " : " << a.z << endl; a = Vector3(4,5,6); cout << a.x << " : " << a.y << " : " << a.z << endl; } http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/93
94: 名前は開発中のものです。 [sage] 2010/09/18(土) 01:56:17 ID:ZJvrb5gA >>92 >Vector3 a1={848,544,0}; >fp.xy(←これは昨日書いていたオブジェクト.構造体変数名の事)=a1; ちょっとこのレスで、代入のコストが気になったんで検証してみた struct A{ A(){} A(int x_, int y_, int z_): x(x_), y(y_), z(z_){} int x,y,z; }; struct B{ B(){} B(int x_, int y_, int z_): x(x_), y(y_), z(z_){} int x,y,z; void operator=(B &val){ x=val.x; y=val.y; z=val.z; } }; AとBの違いはoperator=を使用してるかどうかだけ A a,b; a = b; こんな感じでただ代入するだけの式を、それぞれ100万回ずつ実行 結果は予想外にもBの方が7倍も遅かった(単位はミリ秒) A 5 B 35 そこで試しに、構造体に「double a[256];」を追加して実行 今度はBは変わらず、Aが極端に遅くなった A 255 B 36 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/94
95: 名前は開発中のものです。 [sage] 2010/09/18(土) 02:09:34 ID:ZJvrb5gA 最初Bの方が遅かったのは、operator=のオーバーロード つまり関数オーバーヘッド分の差が出たのだろう 変数を増やすとAが遅くなるのは、ほぼ間違いなくコピーコンストラクタが発生してるからだろう ここら辺は言語仕様のレベルでBのような代入にしてくれてもいいような気がするなー ま、結論としてはoperator=は弄らない方が速い http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/95
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s