using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
/// @author Vesa Lappalainen
/// @version 06.10.2012
///
/// Ohjelmassa vertaillaan tnt- ja double -tyyppien.
///
public class IntVsDouble
{
///
/// Otetaan aikaa summaamisesta
///
/// ei käytössä
public static void Main(string[] args)
{
// Lasketaan intillä
const int MONTAKO = 100000000; // Montako kertaa merkkijonoja yhdistellään
Stopwatch sw = Stopwatch.StartNew();
int isumma = 0;
for (int i = 0; i < MONTAKO; i++)
{
isumma = isumma + 3*i+5;
}
sw.Stop();
double milliseconds = sw.Elapsed.TotalMilliseconds;
System.Console.WriteLine("Int {0,7:##0.000} s {1}", milliseconds / 1000,isumma);
sw.Reset();
// long
sw.Start();
long lsumma = 0;
for (long i = 0; i < MONTAKO; i++)
{
lsumma += 3L * i + 5L;
}
sw.Stop();
milliseconds = sw.Elapsed.TotalMilliseconds;
System.Console.WriteLine("Long {0,7:##0.000} s {1}", milliseconds / 1000, lsumma);
sw.Reset();
// float
sw.Start();
double fsumma = 0;
for (int i = 0; i < MONTAKO; i++) // indeksi int koska float ei mahdu
{
fsumma += 3.0f * i + 5.0f;
}
sw.Stop();
milliseconds = sw.Elapsed.TotalMilliseconds;
System.Console.WriteLine("Float {0,7:##0.000} s {1}", milliseconds / 1000, fsumma);
sw.Reset();
// double
sw.Start();
double dsumma = 0;
for (double i = 0; i < MONTAKO; i++)
{
dsumma += 3.0*i+5.0;
}
sw.Stop();
milliseconds = sw.Elapsed.TotalMilliseconds;
System.Console.WriteLine("Double {0,7:##0.000} s {1}", milliseconds / 1000,dsumma);
sw.Reset();
// decimal
sw.Start();
decimal dssumma = 0;
for (decimal i = 0; i < MONTAKO; i++)
{
dssumma += (decimal)3 * i + (decimal)5;
}
sw.Stop();
milliseconds = sw.Elapsed.TotalMilliseconds;
System.Console.WriteLine("Decimal {0,7:##0.000} s {1}", milliseconds / 1000,dssumma);
System.Console.ReadKey();
}
}