2007-02-01から1ヶ月間の記事一覧

Small Object Optimization

1.34のコードはかなり変更されていて「小さなオブジェクト」の場合は、コピーにheapを使わなくなっている Boost.Lambdaなんかを代入しても速い 以前はboost::is_statelessかどうかで判定していたようだ 大きなオブジェクトの場合も、それがstatelessであるこ…

any_iterator更新

Thomas Beckerによるany_iteratorがかなり本格的なものに書き直されている Boostに入る? any_iterator_abstract_base.hppが面白い

memoize_iterator

spirit::multi_passをちゃんと書き直したつもりの実装 メモ化は効果が強烈である(何十倍も速くなったりする)

再帰Rangeをメモ化する

前回のfibonacciは20番目くらいでシステムに支障を来たしてしまうほど遅い メモ化するといい メモ化の実装であるmulti_passは、デフォルトで、メモ用のコンテナに参照カウントを使うのだが、見てのとおり循環参照が起きてリークする first_ownerというポリシ…

Rangeも再帰する

かつてなく怪しい実装 以下、コンパイルするのも大変なフィボナッチ数列 []using[] []namespace[] []pstade[][]::[][]oven[][];[]

detail::functionN

Boost.Accumulatorsに、もうdetail::functionNが含まれていた これは、Forwarding Problemを解決するためのクラステンプレートである boost::result_ofのサポートも勝手にやってくれる これを使ったのモダンな実装がにある []#include[] []<boost/detail/function2.hpp>[] []#include[] []<boost/type_traits/is_same.hpp></boost/type_traits/is_same.hpp></boost/detail/function2.hpp>…