object_poolでメモリを確保したshared_ptrをvectorに大量に追加し、clear()で解放しようとした際、フリーズしたかと思うほど時間がかかったので検証してみた。
どうやら、destroy()の中で使われているordered_free()がなんかのタイミングでオーバーヘッドになってるっぽい。
以下、無駄に長い検証用コード。
2011年2月28日月曜日
2011年2月27日日曜日
shared_ptrとintrusive_ptrの実装方法とかパフォーマンスとか
最近、C++のメモリの動的確保や管理の方法についていろいろ調べまわっていたので、わかったことをメモしておく。
まずは、スマートポインタについて。
スマートポインタとは、登録したオブジェクトがどこからも参照されなくなったさい、自動でdeleteを呼んでくれる便利クラス。ガベージコレクションの実装された言語ばかりさわってた自分にとって、これはすごくありがたい。
shared_ptrやauto_ptr、intrusive_ptr等が存在するけど、今回はshared_ptrとintrusive_ptrの使い方とパフォーマンスを比較してみた。
まずは、スマートポインタについて。
スマートポインタとは、登録したオブジェクトがどこからも参照されなくなったさい、自動でdeleteを呼んでくれる便利クラス。ガベージコレクションの実装された言語ばかりさわってた自分にとって、これはすごくありがたい。
shared_ptrやauto_ptr、intrusive_ptr等が存在するけど、今回はshared_ptrとintrusive_ptrの使い方とパフォーマンスを比較してみた。
2011年2月26日土曜日
bloggerでSyntaxHighlighter
手始めに記事上のコードを見やすくするために、SyntaxHighlighterを導入してみる。
いろいろやり方はあるみたいだけど、今回はこちらの方の記事を参考にさせてもらった。
使用したい言語を追加しつつ、headタグ内に以下のコードをペースト
これで準備完了。あとは、投稿画面のHTMLの編集で、コードを以下のようにpreタグで囲ってやる。
brush:のあとのhogeに言語に対応した名称を入れてやればいい。
あと、htmlの記述にこちらの変換ツールを使用させてもらった。便利。
jsをアップロードしておきたいんだけど、どこにおけばいいんだろ?
いろいろやり方はあるみたいだけど、今回はこちらの方の記事を参考にさせてもらった。
使用したい言語を追加しつつ、headタグ内に以下のコードをペースト
<!--start SyntaxHighlighter--> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'></script> <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shAutoloader.js' type='text/javascript'></script> <link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/> <link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/> <script type='text/javascript'> window.onload = function() { SyntaxHighlighter.autoloader( "js jscript javascript http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js" ,"bash shell http://alexgorbatchev.com/pub/sh/current/scripts/shBrushBash.js" ,"css http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js" ,"html xml xhtml http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js" ,"cpp c http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js" ,"java http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js" ,"actionscript3 as3 http://alexgorbatchev.com/pub/sh/current/scripts/shBrushAS3.js" ,"php http://alexgorbatchev.com/pub/sh/current/scripts/hBrushPhp.js" ); SyntaxHighlighter.all(); }; </script> <!--end SyntaxHighlighter-->
これで準備完了。あとは、投稿画面のHTMLの編集で、コードを以下のようにpreタグで囲ってやる。
brush:のあとのhogeに言語に対応した名称を入れてやればいい。
<pre class="brush:hoge"> コードを記述... </pre>
あと、htmlの記述にこちらの変換ツールを使用させてもらった。便利。
jsをアップロードしておきたいんだけど、どこにおけばいいんだろ?
2011年2月25日金曜日
このブログについて
プログラミングの勉強、メモ用にブログを使ってみることにした。
基本的にopenframeworksやcinder、processingのようなメディアアート系のフレームワークについての個人的メモを置く場所となる予定。
てきとーなこと書いて、だれかに優しく正してもらう、そんなブログにしたい。
基本的にopenframeworksやcinder、processingのようなメディアアート系のフレームワークについての個人的メモを置く場所となる予定。
てきとーなこと書いて、だれかに優しく正してもらう、そんなブログにしたい。
登録:
投稿 (Atom)