タグ

Boostに関するmae0510のブックマーク (13)

  • 1. boost::weak_ptrを利用するケース|オブジェクトの広場

    1.スマートポインタとは? boost::weak_ptrを利用するケースについてお話しする前に、まず、スマートポインタについての概要をおはなしする必要があります。なぜなら、boost::weak_ptrは、(ちょっと特殊な)スマートポインタの一種だからです。 スマートポインタとは、賢い(スマートな)ポインタという名前の由来からも想像できるかと思いますが、指し示すオブジェクトの後始末を自動化してくれる、ポインタのように振る舞うクラステンプレートのことです。 プログラミング言語C++では、メモリや各種ハンドルなどのリソースの管理にスマートポインタを利用します。スマートポインタを用いることで、リソースの解放が自動化され、リソースリーク問題を防ぐことができます。 残念ながら、現在のC++C++03)標準では、汎用的に利用できるスマートポインタが提供されていません(std::auto_ptrが提

  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • Pool Concepts

    Poolの概念 "動的メモリー割り当ては、概ね1960年以来、ほとんどのコンピューターシステムにとって基礎部分でありつづけた"1 誰しも動的メモリー割り当てを使用する。 malloc や newを呼び出したことがあるなら、動的メモリー割り当てを使用したことがあるということだ。 ほとんどのプログラマはヒープを"magic bag"として扱う傾向がある。 我らは請い、魔術によって生み出され給うと。 だが、ヒープは魔術ではないため、時に問題が起きるのだ。 ヒープには限界がある。 膨大な量の仮想記憶を持つ、(組み込みシステムではない)巨大システムであっても限界はある。 誰しも物理的限界には思いを馳せるが、より気付きにくい"仮想"システム上の限界がある。 その限界では仮想記憶の使用によってあなたのプログラム(もしくはシステム全体)がスローダウンする。 この仮想システムの限界は、物理的限界に比べ遥かに

    mae0510
    mae0510 2011/02/25
    後で読んどく
  • shared_ptrの実装8 -weak_ptrに対応させる- - while( c++ );

    boost::weak_ptrの使い方は、多くの方々が解説していますので割愛します。 weak_ptr http://www.ustream.tv/recorded/2981654 ここでは実装方法についてかなり適当に解説します。 一応前回(shared_ptrの実装7 - while( c++ );)の続き。 まとめページ(shared_ptrまとめ - while( c++ );)にshared_ptrのサンプルをアップしました。 とりあえず以下のよう扱い方が出来るweak_ptrを目指します。 使い方 class Hoge { public: void func(){} }; int main() { weak_ptr< Hoge > b; { shared_ptr< Hoge > a( new Hoge() ); b = a; } if( shared_ptr< Hoge > te

    shared_ptrの実装8 -weak_ptrに対応させる- - while( c++ );
  • OSDIR

    mae0510
    mae0510 2011/02/17
    めも
  • X.Y.Z: Compare performance of malloc and boost::pool

    Andrei Gorine and Konstantin Knizhnik wrote a great article on Dr. Dobb's Journal titled Memory Management & Embedded Databases. In this article, they examine several memory-allocation strategies, explained the advantages/disadvantages based on their experience creating the eXtremeDB in-memory database. As we know it is normal for malloc/free(new/delete) to take 10-20 percent of the CPU time of an

    mae0510
    mae0510 2011/02/16
    pool
  • shared_ptr: horrible speed

    mae0510
    mae0510 2011/02/08
    要検証
  • boostのobject_poolをスマートポインタで利用する - NO!と言えるようになりたい

    boostにはメモリプールをやってくれる親切なobject_poolと言うライブラリがある.この使い方は至って簡単で,テンプレートの引数にクラスを渡してプール用のオブジェクトを作成するだけとなる.指定したクラスの生成を行いたい場合(new classに相当)はconstruct関数を,削除したい場合(delete classに相当)はdestroy関数を呼び出すだけである.サンプルプログラムは以下のとおりとなる. #include <iostream> #include <string> #include <boost/pool/object_pool.hpp> class obj { public: std::string str; obj() { } virtual ~obj() { std::cout << "delete: " << str << std::endl; } }; i

    boostのobject_poolをスマートポインタで利用する - NO!と言えるようになりたい
  • それでも Boost.Optional を使う、大きく分けて2つくらいの理由 - 野良C++erの雑記帳

    Boost.Optional Must Go - 野良C++erの雑記帳 Boost.Optional Must Go (2) - 野良C++erの雑記帳 最近、何回かに分けて、 Boost.Optional について、(細かい)不満を日記に書いてきました。 これは別に Boost.Optional が嫌いだから不満を書いた訳ではなく、むしろ その逆、 Boost.Optional が便利な分、逆に不満点が目立つので書いていたわけですが、 よく考えたら、 Boost.Optional の便利さを、纏まった記事で書いていないなー、 と、そう思い至ったので、この辺で Boost.Optional を徹底的に推奨する記事でも書いてみようかな、 というわけで、さんざん既出なネタばかりですが、折角なので書いてみることにしましたよ。 冒頭に挙げた以外で参考になるような記事は、この辺でしょうか: C++

    それでも Boost.Optional を使う、大きく分けて2つくらいの理由 - 野良C++erの雑記帳
  • Boost.uBLAS の補完ライブラリ - yanoの日記

    uBLAS は行列とベクトルに関する基的な線形代数の演算を提供していますが,一部の演算は未だ実装されていません. 例えば,uBLAS には行列のトレース(Trace)やベクトルの外積(Cross product)を計算する関数はありません. そこで,uBLAS に実装されていない機能の中で,私が「このくらいはあって然るべきだろう」と感じる関数を実装した uBLAS の補完ライブラリを公開します.このライブラリは今のところ以下の機能を有しています. 行列,ベクトルの要素を変形. ノルムの2乗 行列成分の和,トレース,対角成分の積 ベクトルの外積 すべてを遅延評価で実装しています. このライブラリは一つのヘッダファイル(numeric.hpp)のみから構成され,include するだけですべての機能を使えます. VC9 g++ (GCC) 3.4.4 (cygming special) g+

    Boost.uBLAS の補完ライブラリ - yanoの日記
    mae0510
    mae0510 2010/12/27
    uBLAS ベクトル 遅延評価
  • C++ の行列演算ライブラリ - yanoの日記

    こんにちは.このブログでは主に Boost.uBLAS と Boost.Bindings, lapack(clapack) というライブラリを用いた行列計算のライブラリの構築手順と,その実装例を紹介していこうと思います. C++ には uBLAS という有名な行列計算を行うライブラリがあり,基的な行列,ベクトル計算(加算,減算,乗算,内積等)はすべてこのライブラリで計算することができます. uBLAS は boost と呼ばれるライブラリのコンポーネントで,一部を除いてヘッダファイルをダウンロードしてコンパイラのパスを通すだけ(つまり include するだけ)で使えるためとても導入しやすいライブラリで(もちろん,ブログで用いる uBLAS, Bindings もヘッダファイルをダウンロードし,include するだけで使用できます),かつ C++ のエキスパートによって設計された間違

    C++ の行列演算ライブラリ - yanoの日記
  • uBLAS Overview

    Rationale あらゆる種類の数学的なソフトウェアが 効率を失することなくC++ 言語で書かれ得るのなら、 それは素晴らしいことだ。しかし C++ 型システムを犯すことなくこれを達成する何かが発見されない限り、 Fortran やアセンブラ、アーキテクチャ特定の拡張に頼る方がいいだろう (Bjarne Stroustrup)。 この C++ ライブラリは行列とベクトルに関する基的な線形代数の構築、 及びそれらに対応する抽象的な演算といった水準での科学技術計算を目指している。 基的な設計目標は、以下の通りである: 数学的表記 効率 機能性 互換性 もう一つの目的は、そのような行列とベクトルクラスを使うことによる抽象化の不利益が、 許容できるものかどうかを評価することである。 Resources このライブラリの開発はいくつかの似たような努力により導かれた: BLAS by Jack

  • Boost 数学関係ライブラリの使い方

    boost::numeric::ublas 線形代数ライブラリの使い方 連立方程式を解く・逆行列を求める DT Specials -> Boost -> boost::numeric::ublas 線形代数ライブラリの使い方 Last update : Jan. 13th, 2005 はじめに この文書は,線形演算ライブラリ boost::numeric::ublas の使い方の一部を簡単に説明したものです. どうも boost ― uBLAS については日語の説明書きがないようです.頼みの日語解説書[2]も uBLAS はたった 2 ページ.Web をあさっても私の希望にあう解説は見あたりません.仕方がないので英語のオリジナルドキュメントと格闘しました.その結果,なんとか連立1次方程式を解くことと,逆行列を求めることはできるようになったので,私と同じようなお悩みを抱えて Web を巡

    mae0510
    mae0510 2010/12/25
  • 1