ページ 1 / 1
バイナリデータ⇔構造体データの変換速度について
Posted: 2012年1月11日(水) 21:59
by 史上最悪のデスペナ
ふと気になったので質問させていただきます。
ネットワークでのデータ通信はバイナリデータで送りますが(文字列1個とintやfloatが数十個を一まとめ)
リアルタイム性のオンラインゲームにおいては
コード:
クライアント側(構造体→バイナリ化)→ネットワーク→サーバー側(バイナリ→構造体復元→データ処理→バイナリ化)
↑(データ処理) ↓
クライアント側(バイナリ→構造体復元)←ネットワーク←
とやるのは特にMMOのようなさまざまなデータを扱うプログラムでは
ネットワーク通信速度の律速となりそうなイメージがあるのですが
どうなんでしょう?
Re: バイナリデータ⇔構造体データの変換速度について
Posted: 2012年1月11日(水) 23:00
by softya(ソフト屋)
最初から送るバッファ・メモリの形に固めておいてバッファ・メモリの内容をポインタ参照で構造体を使っていれば毎回の変換はいりませんよ。[誤字修正]
まぁ、気になるほどの速度低下があるほどのバイト数とも思えませんが。
Re: バイナリデータ⇔構造体データの変換速度について
Posted: 2012年1月11日(水) 23:04
by 史上最悪のデスペナ
softya(ソフト屋) さんが書きました:最初から送るバッファ・メモリの形に固めておいでバッファ・メモリの内容をポインタ参照で構造体を使っていれば毎回の変換入りませんよ。
この発想は無かったです。
早速、理解したてほやほやのポインタを実践するときが来たというわけですね。
Re: バイナリデータ⇔構造体データの変換速度について
Posted: 2012年1月11日(水) 23:55
by softya(ソフト屋)
ちなみに意識しない内に関数呼び出しでクラスのコピーは引数で行なっているはずですので結構なバイト数のコピーを1処理で行なっていると思います。
stringとか引数で渡すとき参照渡してませんよね?まぁ、参照渡しは別の意味で危険なんですけどね。
Re: バイナリデータ⇔構造体データの変換速度について
Posted: 2012年1月12日(木) 06:34
by beatle
softya(ソフト屋) さんが書きました:stringとか引数で渡すとき参照渡してませんよね?まぁ、参照渡しは別の意味で危険なんですけどね。
C++のstd::stringはconst参照渡しが基本だと思います.
Re: バイナリデータ⇔構造体データの変換速度について
Posted: 2012年1月12日(木) 08:03
by 史上最悪のデスペナ
まだ文字列部分は実装してないです。
今のところは自作関数にintとfloatのみの構造体(例えばS_Pos)を引数に使う場合
void func( S_Pos &a )
みたいにしています。
なので、キャラネームを構造体中に入れようと思っていたので多分そのまま
内部でa->Strとかやっていたと思います。