カテゴリー
アーカイブ
2020/12/22 / VC でのプロファイル への1件のコメント
VC 6 の頃はよく使っていたが…
VC 12 では何故かうまく動かなかった.
VC 14 で簡単に動作を確認すると,前より使い易くなっている.
メニューの「分析」-「パフォーマンス プロファイラー」.
![VC 14 「メニュー」-「分析」-「パフォーマンス プロファイラー」](https://i0.wp.com/dev.mish.work/wordpress/wp-content/uploads/2020/12/VC14_profiler.png?resize=880%2C695&ssl=1)
「CPU 使用率」にチェックを付けて「開始」.
プロファイル用にビルドされて exe が起動する.
テストする操作を行い exe を終了させる.
暫くすると結果が表示される(この情報の見方はよくわからず).
![VC 14 プロファイル exe を終了した後に表示される「概要」?](https://i0.wp.com/dev.mish.work/wordpress/wp-content/uploads/2020/12/VC_profile_make_detail.png?resize=880%2C695&ssl=1)
CPU のグラフの下の「詳細なレポートを作成します…」を「クリック」.
![プロファイラ 詳細なレポート 概要](https://i0.wp.com/dev.mish.work/wordpress/wp-content/uploads/2020/12/VC_profile_detail.png?resize=880%2C695&ssl=1)
上の方のドロップダウンから「関数」を選択.
表示された関数名のリストから関数をダブルクリック(ここでは CF_GetOuterLine ).
![CF_GetOuterLine の「関数コード ビュー」](https://i0.wp.com/dev.mish.work/wordpress/wp-content/uploads/2020/12/VC_profile_CF_GetOuterLine.png?resize=880%2C695&ssl=1)
ちょっと意外だったが,Vd3A の代入に時間がかかっている.
2020/12/23
Vd3A の代入ではなく参照にコードを変更.
テストする exe も,もう少し機能を単純化したものを使用.
![VC 14 プロファイル Vd3A の「代入」を「参照」に変更](https://i0.wp.com/dev.mish.work/wordpress/wp-content/uploads/2020/12/VC_profile_Vd3A_ref.png?resize=880%2C599&ssl=1)
データにもよるが,該当部分の時間が半分位になった.
更にループ内の Vd3 も参照にしてみたが,こちらは効果なし.
typedef Vector3<double> Vd3 ; // 3D 座標 ( double の x , y , z )
typedef std::vector<Vd3> Vd3A ; // 3D 座標の配列
Vd3A は可変長で,メモリの確保と解放が伴うためと思われる.
![std::vector の配列の要素に対する操作の逆アセンブル表示](https://i0.wp.com/dev.mish.work/wordpress/wp-content/uploads/2020/12/VC_profile_Vd3A_copy.png?resize=880%2C1041&ssl=1)
* デバッグ版のため実際のコード(計測した Release 版)とは異なると思う.
![1 回の「面の結合」](https://i0.wp.com/dev.mish.work/wordpress/wp-content/uploads/2020/12/CombineFace_1.png?resize=880%2C934&ssl=1)
Is this 投稿 useful?
Useful
Useless
0 of 0 people say this 投稿 is useful.