1

UDP 接続からシーケンス化されたパケットを読み取るアプリケーションがあります。これらのメッセージは、ルックアップ用のシーケンス番号とともに何らかの形式のバッファに格納する必要があります。

この「バッファ」は、メッセージを削除して処理する別のスレッドによって処理されます。シーケンス番号が見つからない場合は、サービス スレッドを停止してから、別の TCP 接続でメッセージを再要求しました。到着したら、それをバッファに戻したいと思います。サービススレッドは続行できます。

したがって、キーによる挿入、最低キーによる削除が必要です。キーは 1、2、3、4 などの数値の増分値になるため、キーを増分/減分できるため、データ構造をソートする必要がなくなるため、最大の数値を追跡するのが少し簡単になります。

My one plan is to use a Dictionary as the buffer, which makes for a simple solution

My other solution uses a set up two queues

Suggestion by zmbg to use SortedList - I am concerned about performance, as hashing would provide faster lookup and insert not?

私の質問は次のとおりです。

  • 基本的に、このソリューションの辞書を使用して、メモリまたはパフォーマンスの面で落とし穴を探しています。それを実行するマシンのメモリはそれほど多くありませんが、スループット パフォーマンスの優先度が少し高くなります。
  • このアプリケーションが終日実行されている場合、辞書の使用時にメモリ関連の問題は発生しますか?
  • これまたはこの手順の代替実装について考えている人はいますか。設計を決定する必要がありますが、時間がないためにさまざまなソリューションのパフォーマンスをテストすることはできないため、始める前にアイデアの理論的な収集と実装アイデアのメリットを試してみようと思いました。
4

2 に答える 2

0

最終的に、Dictionary を使用して独自の Queue を実装することにしました。

ディクショナリは、私が探している挿入と削除のパフォーマンスを提供します。小さなパフォーマンスの問題について時期尚早に熟考しすぎると、どこにも行き着きません。

最小数のみを追跡することは問題ありません。これ以上詳しく説明することはしません。

于 2012-03-10T17:47:46.417 に答える