나는이 책에서 몇 가지 테스트를 구현했다.
테스트 실행 # 1 : 내 컴퓨터에서 일부 원시 데이터
TestIntegerAssignment 00 : 00 : 00.6680000
TestCallRoutineWithNoParameters 00 : 00 : 00.9780000
TestCallRoutineWithOneParameter 00 : 00 : 00.6580000
TestCallRoutineWithTwoParameters 00 : 00 : 00.9650000
TestIntegerAddition 00 : 00 : 00 : 00 : 00.6410000
TestIntegerSubtraction 00.9630000
TestIntegerMultiplication 00 : 00 : 00.6490000
012,351,TestIntegerDivision 00 : 00 : 00 : 00 : 00.9720000
TestFloatingPointDivision 00.6500000
TestFloatingPointSquareRoot 00 : 00 : 00.9790000
TestFloatingPointSine 00 : 00 : 00.6410000
TestFloatingPointLogarithm 00 : 00 : 41.1410000
TestFloatingPointExp 00 : 00 : 34.6310000
테스트 실행 # 2 : 00 : 00 : 00
TestIntegerAssignment 00.6750000
TestCallRoutineWithNoParameters 00 : 00 : 00.9720000 01,238,007,316,275,523,149 00 : TestCallRoutineWithOneParameter 00 00.6490000
TestCallRoutineWithTwoParameters 00 : 00 : 00.9750000
TestIntegerAddition 00 : 00 : 00.6730000
TestIntegerSubtraction 00 : 00 : 00 : 00 : 01.0300000
TestIntegerMultiplication 00.7000000
TestIntegerDivision 00 : 00 : 01.1120000
TestFloatingPointDivision 00 : 00 : 00.6630000
TestFloatingPointSquareRoot 00 : 00 : 00 : 00 : 00.9860000
TestFloatingPointSine 00.6530000
TestFloatingPointLogarithm 00 : 00 : 39.1150000
TestFloatingPointExp 00 : 00 : 33.8730000
테스트 실행 # 3 :
TestIntegerAssignment 00 : 00 : 00.6590000
TestCallRoutineWithNoParameters 00 : 00 : 00.9700000
TestCallRoutineWithOneParameter 00 : 00 : 00.6680000
TestCallRoutineWithTwoParameters 00 : 00 : 00.9900000
TestIntegerAddition 00 : 00 : 00.6720000
TestIntegerSubtraction 00:00:00.00 : 9,770,000
TestIntegerMultiplication 00 : 00 : 00 00.6580000
TestIntegerDivision 00.9930000
TestFloatingPointDivision 00 : 00 : 00.6740000
TestFloatingPointSquareRoot 00 : 00 : 01.0120000
TestFloatingPointSine 00 : 00 : 00.6700000
TestFloatingPointLogarithm 00 : 00 : 39.1020000
TestFloatingPointExp 00 : 00 : 35.3560000
(,415,139에서 확인할 존 소총의 microbenchmarking 프레임 워크를 사용하여 최적화, AMD 애슬론 X2의 3.0GHz의 컴파일 벤치 마크 당 1 억 개 시험, 093,103,210)
출처 :
class TestBenchmark
{
[Benchmark]
public static void TestIntegerAssignment()
{
int i = 1;
int j = 2;
for (int x = 0; x < 1000000000; x++)
{
i = j;
}
}
[Benchmark]
public static void TestCallRoutineWithNoParameters()
{
for (int x = 0; x < 1000000000; x++)
{
TestStaticRoutine();
}
}
[Benchmark]
public static void TestCallRoutineWithOneParameter()
{
for (int x = 0; x < 1000000000; x++)
{
TestStaticRoutine2(5);
}
}
[Benchmark]
public static void TestCallRoutineWithTwoParameters()
{
for (int x = 0; x < 1000000000; x++)
{
TestStaticRoutine3(5,7);
}
}
[Benchmark]
public static void TestIntegerAddition()
{
int i = 1;
int j = 2;
int k = 3;
for (int x = 0; x < 1000000000; x++)
{
i = j + k;
}
}
[Benchmark]
public static void TestIntegerSubtraction()
{
int i = 1;
int j = 6;
int k = 3;
for (int x = 0; x < 1000000000; x++)
{
i = j - k;
}
}
[Benchmark]
public static void TestIntegerMultiplication()
{
int i = 1;
int j = 2;
int k = 3;
for (int x = 0; x < 1000000000; x++)
{
i = j * k;
}
}
[Benchmark]
public static void TestIntegerDivision()
{
int i = 1;
int j = 6;
int k = 3;
for (int x = 0; x < 1000000000; x++)
{
i = j/k;
}
}
[Benchmark]
public static void TestFloatingPointDivision()
{
float i = 1;
float j = 6;
float k = 3;
for (int x = 0; x < 1000000000; x++)
{
i = j/k;
}
}
[Benchmark]
public static void TestFloatingPointSquareRoot()
{
double x = 1;
float y = 6;
for (int x2 = 0; x2 < 1000000000; x2++)
{
x = Math.Sqrt(6);
}
}
[Benchmark]
public static void TestFloatingPointSine()
{
double x = 1;
float y = 6;
for (int x2 = 0; x2 < 1000000000; x2++)
{
x = Math.Sin(y);
}
}
[Benchmark]
public static void TestFloatingPointLogarithm()
{
double x = 1;
float y = 6;
for (int x2 = 0; x2 < 1000000000; x2++)
{
x = Math.Log(y);
}
}
[Benchmark]
public static void TestFloatingPointExp()
{
double x = 1;
float y = 6;
for (int x2 = 0; x2 < 1000000000; x2++)
{
x = Math.Exp(6);
}
}
private static void TestStaticRoutine() {
}
private static void TestStaticRoutine2(int i)
{
}
private static void TestStaticRoutine3(int i, int j)
{
}
private static class TestStaticClass
{
}
을 찾을 수 없습니다 당신이 on his blog 요청한 것과 관련 조치를했다 (그리고 모든 .NET 언어에서 동일합니다.) –
lol @ simplistic benchmarks. – gbjbaanb
조숙 한 최적화의 조숙 한 최적화처럼 보입니다.이 작업은 어셈블리 코드에서 실행되지만 벤치 마크는 실제 런타임에서 실행되며 IMHO에서는 기계 명령어가 아니라 벤치 마크가 느린 지 테스트합니다. –