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;
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |