COM サーバーによって毎秒数千回トリガーされるイベントがあり、取引所からのリアルタイムの価格情報を提供します。私のコードでは、このイベントにアクセスできます (C#):
private static void COMDataStream_Price(int SymbolNr, float Price, float Volume, DateTime Time)
{ // my code goes here }
受信データをできるだけ速く処理したいのは、交換で非常に忙しいとき、イベントの頻度がさらに高くなり、ストリームがスタックしているように見えて、イベントがトリガーされなくなることがあるためです。
それで、私のアイデアは何でしたか?ConcurrentQueue を使用してデータをキューに入れ、並行していくつかのワーカースレッドを実行して、アイテムをデキューしてそれらを処理したいと考えていました。
しかし、データ (最も重要な値である int SymbolNr、float Price、DateTime Time で構成される) を (ジェネリック) クラスのインスタンスにラップせずに ConcurrentQueue に一度にキューに入れることができないため、どういうわけか立ち往生しています。このアプローチは非常に時間がかかるように思われるため、おそらく 1 秒あたり最大 100.000 個のオブジェクトをインスタンス化することについて話しています。
私は正しいですか?この状況に対処するための最もパフォーマンスの高いアプローチは何ですか?