我在Windows Vista Business x64,四核心機器,8GB RAM上運行以下代碼,使用Visual Studio 2008 SP1。當我連接了調試器/ IDE時,爲什麼我的STL代碼運行速度太慢?
如果我構建一個發佈版本,並從命令行運行它,它會報告31ms。如果我使用F5從IDE啓動它,則報告23353ms。
這裏是時間:(所有的Win32構建)
- DEBUG,命令行:421ms
- DEBUG,從IDE:24,570ms
- RELEASE,命令行:31毫秒
- RELEASE從IDE:23,353ms
代碼:
#include <windows.h>
#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
int runIntersectionTestAlgo()
{
set<int> set1;
set<int> set2;
set<int> intersection;
// Create 100,000 values for set1
for (int i = 0; i < 100000; i++)
{
int value = 1000000000 + i;
set1.insert(value);
}
// Create 1,000 values for set2
for (int i = 0; i < 1000; i++)
{
int random = rand() % 200000 + 1;
random *= 10;
int value = 1000000000 + random;
set2.insert(value);
}
set_intersection(set1.begin(),set1.end(), set2.begin(), set2.end(), inserter(intersection, intersection.end()));
return intersection.size();
}
int main(){
DWORD start = GetTickCount();
runIntersectionTestAlgo();
DWORD span = GetTickCount() - start;
std::cout << span << " milliseconds\n";
}
你可能想看看markdown的幫助,所以你可以更好地格式化代碼 – crashmstr 2009-06-29 20:38:19
是的,說實話,我發現它真的很難合作。 :) 我點擊了'代碼'按鈕並粘貼了我的代碼,它真的被屠殺了。 – 2009-06-29 20:39:22
先將代碼粘貼,然後全選,然後單擊代碼按鈕。 :) – jalf 2009-06-29 20:41:16