2011-02-06 6 views
0

特定の取引システムでは、入力価格はdoubleです。 minimum_price_increment min_price_increment_が知られており、かつ平等は以下のように定義されるDblToIntの実装入力シーケンスdouble_priceからint_priceへのより高速なバージョン

inline bool DblPxCompare (const double & price1, const double & price2) const 
{ 
    register double tdiff = (price1 - price2); 

    return ((tdiff > -half_min_price_increment_) && 
      (tdiff < half_min_price_increment_)) ; 
} 

inline int DblPxToIntPx (const double & price) const 
{ 
    return ((int) round (price/min_price_increment_)) ; 
} 

しかし、時間の受注は、通常のポイントにする傾向があるような価格は、束ねされる傾向があります同様の価格で送信されます。 Double PriceからInt Priceまでの過去20回の変換のソートされたリストを保持するなど、もっとうまくいくでしょうか?

+0

最初の機能は何を問題と関連させますか? –

+4

私はあなたが*私の*退職基金について話していることに感謝しています。あなたはそれを担当して、このような質問をして、私の地獄を押しのけます。 –

+0

私はC++に 'round()'関数がないと思いましたか? – Oystein

答えて

3

キャッシングはうまく動作しません。その理由は、キャッシュ内のエントリが当面の変換に適しているかどうかを確認する必要があるたびに、最初に変換を実行しなくて済むことによるパフォーマンス上の利点を否定すると思います。あなたがすでに持っているのは、IMHOで、キャッシュの恩恵を受けるほど複雑ではありません。

+0

同意します。このようなキャッシュは、必要な作業に加えて、機能に大きなメモリ圧迫を加えます。最新のCPUはメモリにバインドされています。処理は本質的に無料です。 – MSalters

関連する問題