「テキスト折り返し方法の追加(その2)」の評価のためにフリーのプロファイラが無いかと見ていたら,very sleepy というツールを見つけました.
http://www.codersnotes.com/sleepy/
sleepyというのが本家で,その派生版らしいです.
シンボル情報が付いたバイナリを実行してから,very sleepyを起動し,タスク一覧で調査対象スレッドを選択します.
OKを押してから評価したい操作を行い,その後プロファイラを停止すると,実行された関数の一覧が表示されます.
----
「テキスト折り返し方法の追加(その2)」を適用したバイナリで最終行に置いた最長行(500byteくらい)をBSリピートで削除する操作を行ってみました.
CEditView::Command_DELETE_BACK の実行 51.834% に対して
* CEditView::DeleteDataの実行が 39.339% (DELETE_BACKの75.9%)
* CLayoutMgr::RelaceData_CLayoutMgr() が17.653% (DELETE_BACKの34.1%)
* CalculateTextWidth()が16.709% (DELETE_BACKの32.2%)
でした.
長いファイルのうちの最長行をBS連打でたくさん削除するという条件自体ものすごく発生するとも思えないですから,これくらいなら気にしなくてもいいですかね.
特異なパターンとして,上から長い順に並べた行に対して全置換を行うことで新たな最長行が置換対象行の次へ移っていく場合も試しましたが,こっちの方がCalculateTextWidthの占める割合は低いみたいです.