軟體的執行速度必須要在使用者可以接受的範圍內。通常,改善那些短暫的但頻繁使用的例程的速度會大幅度地提高軟體的整體速度。
要改善速度,當然首先要能夠量度時間。好,那我們考慮一下在跑道上的情況,槍聲一響,馬上按下秒錶開始計時,在選手到達終點那一刻結束計時,這時就可以知道該選手所用的時間了。要開始對下一輪比賽計時前,要先將秒錶歸零。.net2.0也提供了這樣乙個秒錶:stopwatch類,它可以比較精確地測量時間。
速度測試:
軟體的效能和可測性是乙個複雜的主題。要確保應用程式能夠滿足使用者的期望,就需要在開發周期內考慮它的效能和可測性。這在設計階段至關重要,乙個糟糕的設計幾乎肯定會導致糟糕的使用者體驗。然而,僅僅有好的設計也不能保證程式能夠高效地執行,最終**的質量同樣重要。
量度乙個執行時間較長的例程相當簡單。如果乙個過程會持續幾分鐘,只要一塊腕表就可以記錄它的時間了。比如乙個執行時間為兩分鐘的過程,10%的改善能夠節省12秒,這是很容易去確定的。
而如果要測量乙個非常短暫的過程,就要考慮更好的精確性了。比如有一些很小的例程,它們的執行時間可能只有千分之一秒,但會被呼叫100萬次,這樣的累積效果就明顯了。在.net framework的先前版本中,需要使用windows api函式,而在.net framework 2.0中,微軟引入了stopwatch(它就是我們的秒錶)類來簡化時間的量度任務。
stopwatch類:
使用stopwatch類來量度時間非常簡單。跟現實生活中的秒錶一樣,這個類的物件也能夠對計數器進行開始、停止、歸零(重置)操作,不過它可比一般的秒錶精確多了,它能夠精確到微秒(也就是百萬分之一秒)。
示例**:
要演示stopwatch的使用還是來段**吧。下面是乙個控制台應用程式,它將1到100萬之間的所有整數累加:
using
system;
namespace
stopwatchclass}}
}新增stopwatch物件:
stopwatch類位於system.diagnostics命名空間。下面是新增物件後的**:
using
system;
usingsystem.diagnostics;
namespace
stopwatchclass}}
}控制stopwatch物件:
stopwatch提供了幾個方法用以控制stopwatch物件。start方法開始乙個計時操作,stop方法停止計時。此時如果第二次使用 start方法,將繼續計時,最終的計時結果為兩次計時的累加。為避免這種情況,在第二次計時前用reset方法將物件歸零。這三個方法都不需要引數。**是:
using
system;
using
system.diagnostics;
namespace
stopwatchclass
timer.stop();}}
} 應當根據計時任務的情況選擇其中的乙個屬性。在我們的示例程式中,elapsed屬性提供了需要的精確度,用它來輸出經過的微秒數。這也是timespan的最高精確度了。
下面是最終的程式**:
using
system;
using
system.diagnostics;
namespace
stopwatchclass
timer.stop();
decimalmicro = timer.elapsed.ticks /10m;
console.writeline(
"execution time was microseconds.
", micro);}}
}另外,使用isrunning屬性可以檢視乙個stopwatch例項是否正在計時,使用startnew方法可以開始乙個新的計時器。
C 用Stopwatch類進行速度測試
軟體的執行速度必須要在使用者可以接受的範圍內。通常,改善那些短暫的但頻繁使用的例程的速度會大幅度地提高軟體的整體速度。要改善速度,當然首先要能夠量度時間。好,那我們考慮一下在跑道上的情況,槍聲一響,馬上按下秒錶開始計時,在選手到達終點那一刻結束計時,這時就可以知 道該選手所用的時間了。要開始對下一輪...
C 用Stopwatch類進行速度測試
軟體的執行速度必須要在使用者可以接受的範圍內。通常,改善那些短暫的但頻繁使用的例程的速度會大幅度地提高軟體的整體速度。要改善速度,當然首先要能夠量度時間。好,那我們考慮一下在跑道上的情況,槍聲一響,馬上按下秒錶開始計時,在選手到達終點那一刻結束計時,這時就可以知道該選手所用的時間了。要開始對下一輪比...
C 基礎 計時類Stopwatch
stopwatch的功能主要是用來測量時間間隔,我們平時測試 執行時長,或者在效能測試中測量迴圈執行多久都經常用的到,這裡稍微講下使用方法。要使用stopwatch需要首先引入命名空間system.diagnostics,然後例項化乙個stopwatch的物件出來就可以了。在需要測試時間間隔地方開始...