¿Por qué mi código STL se ejecuta tan lentamente cuando tengo el depurador / IDE conectado?

Estoy ejecutando el siguiente código, usando Visual Studio 2008 SP1, en Windows Vista Business x64, máquina de cuatro núcleos, ram de 8 gb.

Si compilo una versión de compilación y la ejecuto desde la línea de comandos, informa 31ms. Si luego lo inicio desde el IDE, usando F5, informa 23353ms.

Aquí están los tiempos: (todas las versiones de Win32)

DEBUG, línea de comando: 421msDEBUG, del IDE: 24,570ms.LIBERACIÓN, línea de comando: 31msLIBERACIÓN, desde IDE: 23,353ms.

código:

#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";
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta