2

boost::asio の例のカスタム ハンドラー アロケーター (custom_alloc_handler) を使用する理由: http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/example/allocation/server.cpp示されている - 方法は示されていますが、理由は説明されていません。そして、それが常に何らかの利点をもたらすのであれば、他の例でそれを使用しないのはなぜですか? カスタム アロケーターは、チャット、Web サーバーなどの例にはありません 。

4

1 に答える 1

3

非同期操作では、一時オブジェクトの割り当てが必要になる場合があります。<...> ハンドラーに関連付けられたすべての一時オブジェクトは、ハンドラーへのアップコールが実行される前に割り当てが解除されます。これにより、ハンドラーによって開始される後続の非同期操作に同じメモリを再利用できます。

言い換えれば、上記の手法は、ユーザーが割り当て/割り当て解除の数を最小限に抑えることを可能にする最適化であり、その結果、パフォーマンスが向上し、ヒープの断片化が減少します。

そして、それが常に何らかの利点をもたらすのであれば、他の例でそれを使用しないのはなぜですか?

すべての例は、Asio機能の特定の部分を強調しています。実際のアプリケーションに関しては、時期尚早の最適化は不必要な複雑さをもたらすため、通常は悪い考えです。したがって、上記の最適化は、他の最適化と同様に、適切な場合にのみ使用する必要があります。

于 2013-06-24T07:57:14.840 に答える