C#でDecimalの演算速度が遅い気がしたので、計測してみた。
比較対象は、天下の浮動小数点のDouble。
計測の際に使用したプログラム
private void Test()
{
DecimalDivide();
DoubleDivide();
}
private void DecimalDivide()
{
var stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
Decimal val = 10000;
Decimal calc= 2m;
for( Int32 i = 0; i < 10000; i++ )
{
val = val / calc;
}
stopwatch.Stop();
Debug.WriteLine( stopwatch.ElapsedTicks );
}
private void DoubleDivide()
{
var stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
Double val = 10000;
Double calc = 2.0;
for( Int32 i = 0; i < 10000; i++ )
{
val = val / calc;
}
stopwatch.Stop();
Debug.WriteLine( stopwatch.ElapsedTicks );
}
測定結果
速度差にして約5倍。計算が多くなってくると、ちょっと気になる差かも。。。
まぁ、基本的に、使用する型は、必要十分な型にすべきということですね。
Decimal:1309tick(1.3ms)
Double:224tick(0.24ms)
0 件のコメント:
コメントを投稿