TimeHelper

[Helper]-TimeHelper



有时候,因为测试需要计算程序运行时间,特别是在比较两个算法的性能差异时,直接比较时间更具有直观性。
计算程序运行时间的方法有很多,下面给出两种方法,都分别封装成了类。

一、clock_t

/*
clock():捕捉从程序开始运行到clock()被调用时所耗费的时间。这个
时间单位是clock tick,即“时钟打点”。
常数CLK_TCK(或CLOCKS_PER_SEC):机器时钟每秒所走的时钟打点数。
*/
#include <time.h>
class ClockTimeHelper
{
public:
	clock_t start, stop;
public:
	void StartTime()
	{
		start = clock();
	}
	void StopTime()
	{
		stop = clock();
	}
	void TimeUsed()
	{
		StopTime();
		cout << ((double)(stop - start)) / CLOCKS_PER_SEC << endl; // CLOCKS_PER_SEC CLK_TCK
	}
	
};

二、QueryPerformanceCounter

#include <windows.h>
class CounterTimeHelper
{

public:
	LARGE_INTEGER TimeStart;	//开始时间
	LARGE_INTEGER TimeEnd;		//结束时间
	LARGE_INTEGER Frequency;	//计时器频率
public:
	CounterTimeHelper()
	{
		QueryPerformanceFrequency(&Frequency);
	}
	void StartTime()
	{
		QueryPerformanceCounter(&TimeStart);
	}
	void StopTime()
	{
		QueryPerformanceCounter(&TimeEnd);
	}
	void TimeUsed()
	{
		StopTime();
		// TimeStart和TimeEnd的差除以主频,获得对应时间,单位为秒,可以乘 1000000 精确到微秒级(us)
		double TimeElapsed = (TimeEnd.QuadPart - TimeStart.QuadPart) * 1000000 / Frequency.QuadPart;
		cout << TimeElapsed  << endl;
	}
};

该处使用的url网络请求的数据。


三、使用

#include <math.h>
#include <time.h>
#include <iostream>
using namespace std;

// 写程序计算给定多项式在定点x的值
double f1(int n, double a[], double x)
{
	int i = 0;
	double p = a[0];
	for (i = 1; i <= n; i++)
	{
		p += (a[i] * pow(x, i));
	}
	return p;
}
// 秦九韶算法
double f2(int n, double a[], double x)
{
	int i = 0;
	double p = a[n];
	for (i = n; i > 0; i--)
	{
		p = a[i - 1] + x * p;
	}
	return p;
}

#include <windows.h>
class CounterTimeHelper
{

public:
	LARGE_INTEGER TimeStart;	//开始时间
	LARGE_INTEGER TimeEnd;		//结束时间
	LARGE_INTEGER Frequency;	//计时器频率
public:
	CounterTimeHelper()
	{
		QueryPerformanceFrequency(&Frequency);
	}
	void StartTime()
	{
		QueryPerformanceCounter(&TimeStart);
	}
	void StopTime()
	{
		QueryPerformanceCounter(&TimeEnd);
	}
	void TimeUsed()
	{
		StopTime();
		// TimeStart和TimeEnd的差除以主频,获得对应时间,单位为秒,可以乘 1000000 精确到微秒级(us)
		double TimeElapsed = (TimeEnd.QuadPart - TimeStart.QuadPart) * 1000000 / Frequency.QuadPart;
		cout << TimeElapsed  << endl;
	}
};

int main()
{
#define MAXN 10 
	double a[MAXN]; /* 存储多项式的系数 */
	for (int i = 0; i < MAXN; i++)
	{
		a[i] = (double)i;
	}

	CounterTimeHelper MyTime;
	MyTime.StartTime();
	f2(MAXN - 1, a, 1.1);
	MyTime.TimeUsed();
	
	getchar();
	return 0;
}
通信相关 1.C#HttpHelper,Httpwebrequest,请求时无视编码,无视证书,无视Cookie,网页抓取 访问数据库相关 1.SqlHelper类 2.一个操作Sql2005数据库的类(备份,还原,分离,附加,添加删除用户等操作) 帮助类 1.最新的Functions 类 2.最新的 PageValidate 类 3.JavascriptHelp 4.最新的皮肤帮助类 UI_Misc_Helper JavaScript|Jquery相关 1.jQuery.cookie帮助类 访问系统相关 1.C#计算机信息类ComputerInfo 2.Api_Win32_Mac类工具包 3.在c#程序中放音乐的帮助类 GDI+相关,图像相关 1.生成缩略图的类文件SmallImage C#基础类库 1.Chart图形 Assistant创建显示图像的标签和文件 OWCChart统计图的封装类 2.Cookie&Session;&Cache;缓存帮助类 CacheHelper C#操作缓存的帮助类 CookieHelper C#操作Cookie的帮助类,添加,删除,修改,清理 SessionHelper C#关于Session的操作,获取,设置,删除 SessionHelper2 C#关于Session的一些高级操作,比如取对象,取数据等等 3.CSV文件转换 CsvHelper CSV文件导入DataTable和DataTable导出到Csv 4.DEncrypt 加密/解密帮助类 DEncrypt C# DEncrypt加密/解密帮助类 DESEncrypt Encrypt HashEncode MySecurity RSACryption 5.DLL COM.Excel.dll Excel.dll ICSharpCode.SharpZipLib.dll itextsharp.dll Microsoft.Office.Interop.Owc11.dll Microsoft.Web.UI.WebControls.dll OWC10Chart.dll 6.FTP操作类 FTPClient FTPHelper FTPOperater 7.JS操作类 JsHelper 8.JSON 转化类 ConvertJson List转成Json|对象转成Json|集合转成Json|DataSet转成Json|DataTable转成Json|DataReader转成Json等 9.Mime MediaTypes MimeEntity MimeHeaders MimeReader QuotedPrintableEncoding 10.PDF 转化类 PDFOperation 11.ResourceManager 操作类 AppMessage ResourceManager ResourceManagerWrapper Resources Sample.xml 12.XML操作类 XmlHelper XMLProcess 13.弹出消息类 MessageBox ShowMessageBox 14.导出Excel 操作类 DataToExcel ExcelHelper ExportExcel GridViewExport 15.分词辅助类 SegList 16.汉字转拼音 EcanConvertToCh PinYin 17.配置文件操作类 ConfigHelper 18.日历 CNDate 19.上传下载 DownLoadHelper FileDown FileUp UpLoadFiles 20.时间操作类 DateFormat TimeHelper TimeParser 21.视频转换类 VideoConvert 22.随机数类 BaseRandom RandomHelper RandomOperate 23.条形码 BarCodeToHTML 本类是个条码生成类,大家可根据需要自己设置,非常好用 24.图片 ImageClass ImageDown ImageUpload 25.网络 NetHelper 26.文件操作类 DirFile FileOperate INIFile 27.序列化 Serialize SerializeHelper 28.压缩解压缩 SharpZip 29.验证码 YZMHelper Captcha 验证码类,一个很个性的验证码类 30.页面辅助类 HTMLHelper UploadEventArgs JavaScriptPlus PageHelper 31.邮件 MailHelper MailPoper MailSender SmtpServerHelper 32.邮件2 ConnectCommand ConnectResponse DeleCommand ListCommand ListResponse MailHeaders MailMessageEx NoopCommand PassCommand Pop3Client Pop3Command Pop3Commands Pop3Exception Pop3ListItem Pop3Response Pop3Responses Pop3State QuitCommand RetrCommand RetrResponse RsetCommand Stat StatCommand StatResponse TopCommand UserCommand 33.正则表达式 RegexHelper 34.字符串 StringHelper 35.其它 BasePage BindDataControl ConvertHelper DataCache FormulaExpress GridViewHelper IpHelper MediaHandler PageValidate PicDeal QueryString Rmb StringPlus SysHelper Tools UrlOper Utility ValidateImg WebSitePathHelper
在C#中,创建一个TimeHelper类主要是为了提供一些时间和日期相关的辅助功能。这个类可以包含各种静态方法和属性,以帮助开发者更容易地处理时间和日期。下面是一个简单的TimeHelper类示例,它包含了一些基本的功能: ```csharp using System; public static class TimeHelper { // 获取当前时间并格式化为字符串 public static string GetCurrentTime() { return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } // 获取当前日期并格式化为字符串 public static string GetCurrentDate() { return DateTime.Now.ToString("yyyy-MM-dd"); } // 根据指定的日期格式化字符串 public static string FormatDate(DateTime date, string format) { return date.ToString(format); } // 获取当前时间的毫秒数 public static long GetTimestamp() { return DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond; } } ``` 在这个类中,我们定义了几个静态方法来获取当前的日期和时间,并进行格式化输出。这些方法在不实例化TimeHelper类的情况下可以直接调用。 使用这个类的方法如下: ```csharp class Program { static void Main(string[] args) { // 输出当前时间 Console.WriteLine(TimeHelper.GetCurrentTime()); // 输出当前日期 Console.WriteLine(TimeHelper.GetCurrentDate()); // 使用指定格式输出当前日期 Console.WriteLine(TimeHelper.FormatDate(DateTime.Now, "yyyy年MM月dd日")); // 获取当前时间的毫秒数 Console.WriteLine(TimeHelper.GetTimestamp()); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shlyyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值