1

後でアプリケーションの他の部分で使用するためにスタックに情報を格納しているC#のクラスがあります。情報は現在(メソッドなしで)クラスに格納されており、いくつかのint、shorts、float、およびいくつかのブール値で構成されています。私はこれらのパケットを毎秒10〜40個(場合によってはそれ以上)処理できます。スタック上の情報は、プログラムの別の部分で必要になったときに削除されます。ただし、これが一定の間隔で発生することは保証されていません。情報が不完全になる可能性もあります(ネットワーク接続からのパケットを処理しています)。現在、私はこれをそのように表現しています:

public class PackInfo
{
    public boolean active;
    public float f1;
    public float f2;
    public int i1;
    public int i2;
    public int i3;
    public int i4;
    public short s1;
    public short s2;
}

この情報を表現するためのより良い方法はありますか?スタックが大きくなりすぎる可能性はありませんが(大きくなりすぎるとほとんどの情報がクリアされます)、動作するクラスのインスタンスを非常に多く作成することに伴う不必要な量のメモリオーバーヘッドが発生するのではないかと心配しています。この情報のコンテナにすぎません。これは計算が複雑でもメモリを消費するタスクでもありませんが、どちらかになるとうまくスケーリングできないと思います。

4

1 に答える 1

4

これは、これらを格納するために汎用キューを使用することをお勧めするように思われます。私はあなたがこれらの「メッセージ」を順番に扱っていると仮定しています。

これらのクラスのインスタンス化のオーバーヘッドに関しては、1秒あたり10〜40のインスタンス化がパフォーマンスに目に見える影響を与えるとは思わないので、後で実行する実際の処理は、インスタンス化のコストよりも最適化の候補としてはるかに適しています。

また、アプリケーションのパフォーマンスを実際に測定できる場合にのみ最適化することをお勧めします。そうしないと、時期尚早の最適化に時間を浪費する可能性があります。

于 2012-10-10T04:21:11.380 に答える