Cosmos/source/Tests/Performance/Program.cs
kudzu_cp 9083109678
2007-11-15 21:34:18 +00:00

107 lines
3.3 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Performance {
class Program {
[DllImport("kernel32.dll")]
static extern uint GetTickCount();
static int Do (int aOne, int aTwo) {
var xOne = aOne;
var xResult = xOne + aTwo;
return xResult;
}
private static string IntToHex(uint aValue) {
string xResult = "";
uint xValue = aValue;
byte xCurrentBits = 32;
while (xCurrentBits >= 4) {
xCurrentBits -= 4;
byte xCurrentDigit = (byte)((xValue >> xCurrentBits) & 0xF);
string xDigit = null;
switch (xCurrentDigit) {
case 0:
xDigit = "0";
break;
case 1:
xDigit = "1";
break;
case 2:
xDigit = "2";
break;
case 3:
xDigit = "3";
break;
case 4:
xDigit = "4";
break;
case 5:
xDigit = "5";
break;
case 6:
xDigit = "6";
break;
case 7:
xDigit = "7";
break;
case 8:
xDigit = "8";
break;
case 9:
xDigit = "9";
break;
case 10:
xDigit = "A";
break;
case 11:
xDigit = "B";
break;
case 12:
xDigit = "C";
break;
case 13:
xDigit = "D";
break;
case 14:
xDigit = "E";
break;
case 15:
xDigit = "F";
break;
}
Console.Write(xDigit);
xResult = xResult + xDigit;
}
Console.WriteLine();
return xResult;
}
const int LoopSize = 50 * 1000 * 1000;
static void Main (string[] args) {
Console.WriteLine("Hello");
//for JIT
//Also to kick a out SpeedStep
for (int j = 1; j <= LoopSize; j++) {
var x = Do(j, 5);
}
Console.WriteLine("Starting Test");
//Now do test run
var xStart = GetTickCount();
for (int j = 1; j < LoopSize; j++) {
var x = Do(j, 5);
}
var xFinish = GetTickCount();
var xTime = xFinish - xStart;
IntToHex(xStart);
IntToHex(xFinish);
IntToHex(xTime);
Console.WriteLine("Bye");
}
}
}