External/Aga.Controls/TimeCounter.cs
author moel.mich
Mon, 02 Jul 2012 21:14:40 +0000
changeset 357 fb8dc26f65a4
permissions -rw-r--r--
Added mainboard specific configurations for the following Gigabyte mainboards: EX58-UD3R, G41M-Combo, G41MT-S2, G41MT-S2P, GA-MA770T-UD3P, GA-MA785GM-US2H, GA-MA78LM-S2H, GA-MA790X-UD3P, H55-USB3, H55N-USB3, H61M-DS2 REV 1.2, H61M-USB3-B3 REV 2.0, H67A-USB3-B3, P55A-UD3, P67A-UD3-B3, P67A-UD3R-B3, Z68A-D3H-B3, Z68AP-D3, Z68X-UD3H-B3.
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Text;
     4 using System.Runtime.InteropServices;
     5 using System.Diagnostics.CodeAnalysis;
     6 
     7 namespace Aga.Controls
     8 {
     9 	/// <summary>
    10 	/// High resolution timer, used to test performance
    11 	/// </summary>
    12 	public static class TimeCounter
    13 	{
    14 		private static Int64 _start;
    15 
    16 		/// <summary>
    17 		/// Start time counting
    18 		/// </summary>
    19 		public static void Start()
    20 		{
    21 			_start = 0;
    22 			QueryPerformanceCounter(ref _start);
    23 		}
    24 
    25 		public static Int64 GetStartValue()
    26 		{
    27 			Int64 t = 0;
    28 			QueryPerformanceCounter(ref t);
    29 			return t;
    30 		}
    31 
    32 		/// <summary>
    33 		/// Finish time counting
    34 		/// </summary>
    35 		/// <returns>time in seconds elapsed from Start till Finish	</returns>
    36 		public static double Finish()
    37 		{
    38 			return Finish(_start);
    39 		}
    40 
    41 		public static double Finish(Int64 start)
    42 		{
    43 			Int64 finish = 0;
    44 			QueryPerformanceCounter(ref finish);
    45 
    46 			Int64 freq = 0;
    47 			QueryPerformanceFrequency(ref freq);
    48 			return (finish - start) / (double)freq;
    49 		}
    50 
    51 		[DllImport("Kernel32.dll")]
    52 		[return: MarshalAs(UnmanagedType.Bool)]
    53 		static extern bool QueryPerformanceCounter(ref Int64 performanceCount);
    54 
    55 		[DllImport("Kernel32.dll")]
    56 		[return: MarshalAs(UnmanagedType.Bool)]
    57 		static extern bool QueryPerformanceFrequency(ref Int64 frequency);
    58 	}
    59 }