Mail: Pass:
前月  2008年2月  翌月
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29

links

 びびすけさんのページ
 体重・走距離分析
 月間・靴・コース走距離
 タイムトライアル分析
 速度・心拍数分析
 自転車・月間・コース走距離
 オセロ勝敗・レート分析
 ViVi web site

新着日記

 はじめての AIR プログラム(汎用…
 モカ将棋 0.005 リリース
 座標がずれる
 壁にぶちあたった
 Laramie V1 に勝ち越し!
 vs Laramie V1 10番勝負
 モカ将棋10番勝負 (2)
 開発マシンが死んだ!?
 vs Lesserkai 1.3.2 10番勝負
 TJshogi にも初勝利
 Lesserkai 1.3.2 (1秒)に初勝利!
 将棋大会 地区予選
 プレイアウト結果の信頼性
 vs ランダム将棋
 moca将棋
 ViVi 2.05

新着コメント

 無題/ひらた
 直った/びびすけ
 vs Laramie V2/びびすけ
 vs LaramieV1 10…/びびすけ
 vs TJshogi 0.03…/びびすけ
 vs ランダム将…/びびすけ
 vs TJshogi 0.03/びびすけ
 羽生×山崎/びびすけ
 ボナ×渡辺竜王/びびすけ
 羽生×山崎 戦/びびすけ

トラックバック

トラックバックはありません。

カテゴリ一覧

 基本データ
 テニス
 ジョギング
 ViVi
 自転車
 Web
 RunRunDietOnline
 PostgreSQL
 ビルドアップ走
 ランニング

3件の日記があります。

残作業 (2008/02/24 16:28) 2 comment

新マシン(ウルフデール)への移行はだいたいできたのだが、以下の3点がまだ解決してない
・ 音が出ない
  (デバイスマネージャを見るとPCIデバイスが?状態になっているためか、
    サウンドデバイスのセットアップがうまくいかない)
・ LimeChat で ViVi チャンネルに入れない(なして?)
・ Synergy でつながらない
   (旧開発マシンから新開発マシンが何故か見えないみたいだ)

オブジェクト作成 (2008/02/24 21:25) 0 comment

Modern C++ Design を読んでいると、C++ は小さいメモリブロックの new/delete がかなり遅いと書いてあった。
そういえば、ViVi では行情報クラスの new/delete を自前で用意して、高速化した記憶がある。
んで、前掲書には小さなオブジェクトの new/delete を高速化するためのライブラリ SmallObject が詳しく、
自信たっぷりに記述してあるのだが、
たぶん究極のC++ライブラリ、Lokiを使う - SmallObj を読むと、そのパフォーマンスは目を覆いたくなるものである
おいらも実際にパフォーマンスを計測してみようと思ったが、SmallObj のありかがわからない・・・

というわけで、BOOST を調べてみると、object_pool なるものがあることがわかった。
使い方は簡単で、<boost/pool/object_pool.hpp> をインクルードし、object_pool を使用するクラスを S とするとき、
    boost::object_pool<S> pool;
で、オブジェクトプールオブジェクトを生成し、
    S *ptr =  pool.construct();
で、S オブジェクト生成、
    pool.destroy(ptr);
でオブジェクトをフリーしてくれる。
オブジェクトプール自体をdeleteすると、当然オブジェクトプールで生成したオブジェクトを全部一度にdeleteしてくれる
エディタの各行情報をオブジェクトプールで管理するとすれば、各ドキュメントごとにオブジェクトプールを保持すれば、
ドキュメントを破棄するときはオブジェクトプールをdeleteするだけで、行情報を全部deleteしてくれるという寸法だ
(続く)

object_pool のパフォーマンス (2008/02/24 21:40) 1 comment

boost::object_pool がどの程度速いのか、ためしに計測してみることにした。

struct S
{
int m_v;
public:
S(int v=0) : m_v(v) {};
~S() {};
};
(注意:object_pool を使用するクラスに デストラクタが定義されていないとコンパイル時にエラーとなります)

上記のクラスについて、1024個のオブジェクトを生成し、順にdelete、これを100回繰り返し、その時間を計測した
(ソースはここ

まずはデバッグモードで計測してみた(@ウルフデール 3GHz, Mem2G, WinXP, VS2008)ところ

new/delete : 1.359秒
object_pool : 7.375秒
一括delete : 0.11秒

あんで、object_pool ぜんぜん速くないじゃん???

念のためにリリースモードでも計測してみたところ

new/delete : 0.656秒
object_pool : 0.078秒
一括delete : 0秒

おおおっ、評判どおり new/delete よりも約10倍高速だ!
使い方も簡単だし、これはでっかいよさげやね

3件の日記があります。

パスワード忘れ
今週のランキング
計算タマちゃん
FAQ
ヘルプ
about rrdOnline