バイナリデータ⇔構造体データの変換速度について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
史上最悪のデスペナ
記事: 521
登録日時: 15年前

バイナリデータ⇔構造体データの変換速度について

#1

投稿記事 by 史上最悪のデスペナ » 14年前

ふと気になったので質問させていただきます。

ネットワークでのデータ通信はバイナリデータで送りますが(文字列1個とintやfloatが数十個を一まとめ)
リアルタイム性のオンラインゲームにおいては

コード:

クライアント側(構造体→バイナリ化)→ネットワーク→サーバー側(バイナリ→構造体復元→データ処理→バイナリ化)
       ↑(データ処理)                  ↓
クライアント側(バイナリ→構造体復元)←ネットワーク←
とやるのは特にMMOのようなさまざまなデータを扱うプログラムでは
ネットワーク通信速度の律速となりそうなイメージがあるのですが
どうなんでしょう?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: バイナリデータ⇔構造体データの変換速度について

#2

投稿記事 by softya(ソフト屋) » 14年前

最初から送るバッファ・メモリの形に固めておいてバッファ・メモリの内容をポインタ参照で構造体を使っていれば毎回の変換はいりませんよ。[誤字修正]
まぁ、気になるほどの速度低下があるほどのバイト数とも思えませんが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

史上最悪のデスペナ
記事: 521
登録日時: 15年前

Re: バイナリデータ⇔構造体データの変換速度について

#3

投稿記事 by 史上最悪のデスペナ » 14年前

softya(ソフト屋) さんが書きました:最初から送るバッファ・メモリの形に固めておいでバッファ・メモリの内容をポインタ参照で構造体を使っていれば毎回の変換入りませんよ。
この発想は無かったです。
早速、理解したてほやほやのポインタを実践するときが来たというわけですね。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: バイナリデータ⇔構造体データの変換速度について

#4

投稿記事 by softya(ソフト屋) » 14年前

ちなみに意識しない内に関数呼び出しでクラスのコピーは引数で行なっているはずですので結構なバイト数のコピーを1処理で行なっていると思います。
stringとか引数で渡すとき参照渡してませんよね?まぁ、参照渡しは別の意味で危険なんですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: バイナリデータ⇔構造体データの変換速度について

#5

投稿記事 by beatle » 14年前

softya(ソフト屋) さんが書きました:stringとか引数で渡すとき参照渡してませんよね?まぁ、参照渡しは別の意味で危険なんですけどね。
C++のstd::stringはconst参照渡しが基本だと思います.

史上最悪のデスペナ
記事: 521
登録日時: 15年前

Re: バイナリデータ⇔構造体データの変換速度について

#6

投稿記事 by 史上最悪のデスペナ » 14年前

まだ文字列部分は実装してないです。
今のところは自作関数にintとfloatのみの構造体(例えばS_Pos)を引数に使う場合
void func( S_Pos &a )
みたいにしています。
なので、キャラネームを構造体中に入れようと思っていたので多分そのまま
内部でa->Strとかやっていたと思います。

閉鎖

“C言語何でも質問掲示板” へ戻る