72 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Specialized;
 | |
| 
 | |
| namespace VlnProfiler
 | |
| {
 | |
| 	/// <summary>
 | |
| 	/// Summary description for Profiler.
 | |
| 	/// </summary>
 | |
| 	public class Profiler
 | |
| 	{
 | |
| 		static HybridDictionary dicTiming;
 | |
| 		static HybridDictionary dicDuration;
 | |
| 
 | |
| 		static Profiler()
 | |
| 		{
 | |
| 			Reset();
 | |
| 		}
 | |
| 
 | |
| 		public static void Reset()
 | |
| 		{
 | |
| 			dicTiming = new HybridDictionary();
 | |
| 			dicTiming["  Total"]=DateTime.Now;
 | |
| 			dicDuration = new HybridDictionary();
 | |
| 		}
 | |
| 
 | |
| 		public static void Start(string sName)
 | |
| 		{
 | |
| 			dicTiming[sName]=DateTime.Now;
 | |
| 		}
 | |
| 
 | |
| 		public static void End(string sName)
 | |
| 		{
 | |
| 			if( dicDuration.Contains(sName))
 | |
| 				dicDuration[sName]=((TimeSpan) dicDuration[sName]) + (DateTime.Now - ((DateTime) dicTiming[sName]));
 | |
| 			else
 | |
| 				dicDuration[sName]=DateTime.Now - ((DateTime) dicTiming[sName]);
 | |
| 		}
 | |
| 
 | |
| 		public static string ToString(string Format)
 | |
| 		{
 | |
| 			string str="";
 | |
| 			string sep="";
 | |
| 			if(Format.IndexOf("%")>=0)
 | |
| 			{
 | |
| 				double ttl = Convert.ToDouble(((TimeSpan) (DateTime.Now - ((DateTime) dicTiming["  Total"]))).Ticks);
 | |
| 				double ttlOther=ttl;
 | |
| 				foreach(string strKey in dicDuration.Keys)
 | |
| 				{
 | |
| 					ttlOther-=((TimeSpan) dicDuration[strKey]).Ticks;
 | |
| 					double dt = Convert.ToDouble(((TimeSpan) dicDuration[strKey]).Ticks)/ttl;
 | |
| 					//TODO: If Percent - Convert to Percent of Total
 | |
| 					str+=sep+dt.ToString(Format) + " " + strKey;
 | |
| 					sep="\r\n";
 | |
| 				}
 | |
| 				ttlOther = ttlOther/ttl;
 | |
| 				str+=sep+ttlOther.ToString(Format) + " Other";
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				foreach(string strKey in dicDuration.Keys)
 | |
| 				{
 | |
| 					str+=sep+((TimeSpan)dicDuration[strKey]).ToString(/*Format*/) + " " + strKey;
 | |
| 					sep="\r\n";
 | |
| 				}
 | |
| 			}
 | |
| 			str+=sep + "".PadRight(20,'-');
 | |
| 			str+=sep + ((TimeSpan) (DateTime.Now - ((DateTime) dicTiming["  Total"]))).ToString(/*Format*/) + " Total";
 | |
| 			return str;
 | |
| 		}
 | |
| 	}
 | |
| }
 |