お馬の写真 別館

「お馬の写真」管理者による徒然なるブログ

#pragma unmanagedの位置

      2015/06/08

mandelbrot

「マンデルブロ集合: C++でも書いてみた」でC++でネイティブコードで書いた方がF#より遅い、なんでかなぁ、ということを書いていたのですが、原因判明。

「#pragma unmanaged」の位置の問題でした。

C#で作ったGUI側での計時結果のため、あまり厳密なものではありませんが、「マンデルブロ集合: C++でも書いてみた」で示したコードだと1画面分の計算に210〜220ms。

「#pragma unmanaged」をコードの先頭(「#include “stdafx.h”」より前)に移動すると、同じく1画面分の計算に120〜130ms。

「#pragma unmanaged」の記述自体をやめると120〜130ms。

おそらくですが下手に#pragma unmanagedを入れると、マネージ〜アンマネージ間の処理移行が頻繁に起こってしまって実行が遅くなっているのではないか、と。「ダブル サンキング (C++)」あたりが参考になるかな、と思います。

 - プログラミング