2
我正在使用C#編寫應用程序。我運行了一些基準來嘗試加快我的應用程序並解決了一個問題。我有一個環路,它需要在分開的時間間隔運行多次:首次索引數組太慢了
Process[] processes = Process.GetProcesses();
foreach (Process process in processes)
if (process.MainWindowTitle == "Title")
{
// Do Stuff
}
我意識到的問題是,一旦創建陣列,訪問該陣列的特定元素大於隨後的訪問需要顯著更長。
if (processes[0].MainWindowTitle == "Title") { } // ~0.5 ms
if (processes[0].MainWindowTitle == "Title") { } // ~0.0 ms
if (processes[0].MainWindowTitle == "Title") { } // ~0.0 ms
if (processes[0].MainWindowTitle == "Title") { } // ~0.0 ms
這是一個相當重要的問題。應該少於0.1ms的東西需要50ms。爲什麼會發生這種情況,我能做些什麼來加快速度?
+1聽起來很可能 – Jonno
是的,你是對的。我正在尋找我的基準測試的錯誤位置。 MainWindowTitle會檢查它是否先緩存標題,如果它沒有做一些Native magic來獲得它,我猜它是放慢速度的地方。謝謝。 – Dave