2012年12月24日月曜日

macportsメンテナンスルーチン

覚え書き
デフォルトのgccであることを最初に確認しておく。 また、python24に依存したportsを全てアンインストールするときは 特定のパッケージを無視するときは 参考サイト

[追記]2017/02/25
OSをmacOS Sierra v10.12にアップグレードしたあとこのサイトの項目「Migration procedure」の1と2だけを実行した。macports.confは触っていない。

2012年12月1日土曜日

std::listとstd::vectorのベンチマーク

isocppのサイトにstd::listとstd::vectorのベンチマークの記事が紹介されていました。
http://www.baptiste-wicht.com/2012/11/cpp-benchmark-vector-vs-list/

作者は実際に測定を行い、こう結論しています。
  1. std::vector is insanely faster than std::list to find an element
  2. std::vector performs always faster than std::list with very small data
  3. std::vector is always faster to push elements at the back than std::list
  4. std::list handles very well large elements, especially for sorting or inserting in the front
そして、実際にコードを書く際の指針を以下のように示しています。
  1. Number crunching: use std::vector
  2. Linear search: use std::vector
  3. Random Insert/Remove: use std::list (if data size very small (< 64B on my computer), use std::vector)
  4. Big data size: use std::list (not if intended for searching)
ここで、crunchingとはソートされたコンテナに乱数を挿入する操作のことです。

C++11を使ってOpenCV-2.4.3をコンパイルする。

CentOS5.8上でC++11(gcc-4.7.2)を使ってOpenCV-2.4.3をコンパイルしました。以下覚え書きとして記します。

.bashrcには以下の記述が既にあります。 すなわち、gcc-4.7.2へのパスをシステムは認識しています。
今いる場所はここ。 以下を実行。

C++11を使ってBoost-1.52.0をコンパイルする。

CentOS5.8上でC++11(gcc-4.7.2)を使ってBoost-1.52.0をコンパイルしました。以下覚え書きとして記します。

.bashrcには以下の記述が既にあります。 すなわち、gcc-4.7.2へのパスをシステムは認識しています。そして、今いる場所はここ。 ここに従ってboost.buildをインストールします。 PATHに/usr/local/boost.build/binを追加します。そして、以下を実行します。 しばらくすると、「pyconfig.hがない」と出ました。なのでこれを実行します。 あらためて 今度は「zlib.hがない」「bzlib.hがない」と出ました。これらをインストールします。 あらためて 出来ました。stageディレクトリの下にライブラリができています。これをcpコマンドを使って「手動で」目的の場所にコピーしました。

最初は手動ではなく、このコマンドを使ってインストール(コピー)を行いました。 このコマンドを実行すると、コピーだけでなくコンパイルも始めます。それもデフォルトのgcc(4.1.2)を使って。 コンパイルは終わってるはずです。よくわかりません。なので、上記のように「手動インストール」しました。