struct test_struct
{
test_struct() {}
~test_struct() {}
};
#include <vector>
#include <memory>
#include <cstdio>
int main()
{
printf("ctor begin\n");
{
std::vector<std::unique_ptr<test_struct>> test_vec;
const int count = 100000;
for (auto i = 0; i < count; i++) {
test_vec.emplace_back(new test_struct);
}
printf("dtor begin\n");
}
printf("dtor end\n");
}
Estoy usando VS2010 y he encontrado un problema de rendimiento ridículo. El código anterior funciona bien tanto en depuración como en compilación de versión (ctrl + f5), pero cuando se adjunta depurador (f5), la llamada dtor para la clase unique_ptr es intolerablemente lenta. El código máquina de resultados está bastante optimizado, así que no espero que sea un problema de compilación en lugar de depurador, pero no sé cómo manejarlo. Mi pregunta esRidículamente lenta llamada unique_ptr dtor cuando se adjunta depurador (msvc)
- ¿Se puede reproducir este problema en su máquina?
- ¿Cuál es la razón de este comportamiento?
- ¿Hay alguna solución?
Pruebe a enjuagar después de cada printf. – Pubby
@Pubby: Eso no marcará la diferencia, solo hay 3 'printf's en total, no uno por cada iteración de bucle. –
Pude reproducir esto en mi edición expresa VS2010. – RedX