2010-05-06 75 views
4

我如何配置Visual Studio的測試項目使用所有CPU的核心。壓力測試與多核CPU的視覺工作室

當我運行測試時,我可以看到我的性能指標中只有一個內核被使用(100%),其餘7個內核未被使用。

我在測試項目裏面有一個負載測試調用了一個UNITY測試。

我已經設置了200個用戶來調用一種方法。但我需要使用所有的核心。

+2

什麼樣的測試項目? – cjk 2010-05-06 15:25:15

+0

是測試項目內部的負載測試。 – shinji14 2010-05-06 19:03:52

+0

我發現這得益於Fouz: 「當你運行在多核計算機負載測試,負載生成受到限制如下: 如果計算機運行Visual Studio團隊系統測試版或Visual Studio Team System中的負載生成僅限於一個內核 如果計算機正在運行Visual Studio Team System測試負載代理,則負載生成不受限制;它可在所有內核和處理器上運行。 但即時通訊使用Visual Studio 2010 Ultimate,並且該消息引用Visual 2008. – shinji14 2010-05-06 19:12:14

回答

5

丹尼斯,根據MSDN

「在nontest控制器情況下,添加一個Visual Studio負載測試虛擬用戶包2010具有解鎖所有機器的處理器使用的額外好處沒有一個Visual Studio負載測試。虛擬用戶包2010,本地機器只能使用第一個處理器。添加Visual Studio負載測試虛擬用戶包2010後,負載測試可以在機器運行時使用機器上的所有處理器。「

因此,如果您沒有用戶包許可證,則無法解鎖其他核心。

-1

有可能您的測試代碼都是單線程的。單元測試是按順序運行的,所以除非每個測試中的代碼都是多線程的,否則它只能運行在一個線程中。

請小心,在多個線程中運行測試會產生不良後果,單元測試應該只測試該單元,如果是多線程,那麼測試應該是單線程的。

2

查看接受的答案here。簡介:您需要Visual Studio Team System測試負載代理來執行此操作。

-1

你必須在多個線程中工作。試試這個:

class Program 
{ 
    static bool isRunning = true; 

    static void Main(string[] args) 
    { 
     BackgroundWorker bw1 = new BackgroundWorker(); 
     BackgroundWorker bw2 = new BackgroundWorker(); 

     bw1.DoWork += delegate(object sender, DoWorkEventArgs e) 
     { while (isRunning) { } }; 

     bw2.DoWork += delegate(object sender, DoWorkEventArgs e) 
     { while (isRunning) { } }; 

     bw1.RunWorkerAsync(); 
     bw2.RunWorkerAsync(); 

     Console.ReadLine(); 
     isRunning = false; 

    } 
} 

可以提高取決於你有多少個核有背景的工人數量(本例中馬克塞斯我的雙核電腦)。您可以在運行工人之後放置代碼,然後通過更改isRunning的值來停止它們。

+0

我的單元測試可以在單個內核上執行。我需要的是Visual Studio使用我所有的核心來連接用戶單元測試。 – shinji14 2010-05-06 19:08:25