Visual Studio 2008 SP1을 사용하여 Windows Vista Business x64, 쿼드 코어 컴퓨터, 8GB 램에서 다음 코드를 실행합니다.디버거/IDE를 연결하면 STL 코드가 너무 느리게 실행되는 이유는 무엇입니까?
릴리스 빌드를 빌드하고 명령 줄에서 실행하면 31ms가보고됩니다. 그런 다음 F5 키를 사용하여 IDE에서 시작하면 23353ms가보고됩니다. 여기
는 배 : 421ms- DEBUG는 명령 줄 (모두는 Win32 빌드) , 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";
}
코드 해독에 대한 도움말을 확인하여 코드를 더 잘 포맷 할 수 있습니다. – crashmstr
예, 솔직히 말해서 작업하기가 정말 어렵습니다. :) '코드'버튼을 클릭하고 코드를 붙여 넣었습니다. 실제로 코드를 도살했습니다. –
코드를 먼저 붙여 넣은 다음 모두 선택하고 코드 버튼을 클릭하십시오. :) – jalf