在C#中通常使用DateTime来表示当前时间,可以在一个操作的前后分别使用一个DateTime对象获取当前时间,再将两个DateTime对象相减获得时间差(TimeSpan对象),从而得到这个操作耗费了多少时间。
但是,在某些情况下,需要循环获取执行一个操作,而这个操作可能并没有耗费太多的时间,只是循环的量级很大的时候,消耗的时间还是很可观的。这时如果使用上面的方法会比较麻烦。
C#提供了一个类Stopwatch,在操作开始前,调用Stopwatch对象的Start方法;操作结束后调用Stopwatch对象的Stop方法。在循环结束后,调用Stopwatch对象的Elapsed对应的属性可以获取总时间。
Worksheet sheet = ExcelAddIn2.Globals.ThisAddIn.Application.ActiveSheet; Range allCells = sheet.Cells; Stopwatch addressWatch = new Stopwatch(); Stopwatch addressLocalWatch = new Stopwatch(); foreach (Range cell in allCells) { addressWatch.Start(); var address = cell.Address; addressWatch.Stop(); addressLocalWatch.Start(); var addressLocal = cell.AddressLocal; addressLocalWatch.Stop(); } double addressCoast = addressLocalWatch.Elapsed.TotalMilliseconds;