タグ

algorithmとbenchmarkに関するkgbuのブックマーク (2)

  • 本当に1.5倍のほうがメモリ効率がよいのか - inamori’s diary

    C++のstd::vectorにpush_backしていくと、ある領域を確保して、それを超えそうになったらまたある程度ゆとりのある領域を確保するという機構になっています。 2倍だけじゃない - d.y.d. にまとめてありますが、std::vectorや類似するコンテナは2倍ずつ領域を大きくしていくのかと思いきや、1.5倍というのも多いんですね。実際にVC10 beta2で動かしてみると、 #include <iostream> #include <vector> int main() { std::vector<int> v; for(int i = 0; i < 100; i++) { const std::vector<int>::size_type old_cap = v.capacity(); v.push_back(i); const std::vector<int>::siz

    本当に1.5倍のほうがメモリ効率がよいのか - inamori’s diary
    kgbu
    kgbu 2010/07/24
    利用効率を実際にテストしてみた結果、あまり差はなく、むしろ2倍のほうが、コピー回数少ない利点があるのでは?、、ということらしい。母関数みたいなものを得ることはできるだろうか。
  • 今後の開発について その1 - 最適化問題に対する超高速&安定計算

    9,10日と今後の開発計画について議論を行った(非常に中身の濃い議論だった)。高速化等の改善のためには、まず現在のプログラムについて徹底した調査が必要になる。どのような問題を入力したときに、どの部分がボトルネックになるのかについても、いろいろな方法で直接的、間接的に知ることができる。今までのアルゴリズム開発というのは、計算量(CPU 上での演算量に近い)と記憶容量に重点を置いてきていたので、CPU とメモリ間のデータの移動量については考慮されることは少なかった。また、データを参照する範囲、局所性のような概念も取り入れる必要がある。 例えば現在、開発を行いながら同時に公開も行っている最短路問題に対するダイクストラ法を実装したプログラムでは、最小ポテンシャルの点を高速に見つけるために、ヒープやバケットを利用している。ヒープは最小点を見つけるのは大変高速だが、データの更新に非常にデータ参照と書き

    今後の開発について その1 - 最適化問題に対する超高速&安定計算
  • 1