В настоящее время я пишу программу, в которой мне нужно запустить много симуляций, а скорость - это название игры. В настоящее время я использую один длинный линейный массив, выделенный для кучи, и сам определяю размеры и вытягиваю прямо из индекса, который я работаю. Сотрудник написал аналогичную программу и получил хороший прирост скорости благодаря использованию 5D массива. Я знаю, что было бы очень легко выделить это как вектор, но насколько я знаю, есть скорость, чтобы использовать вектор в результате проверки границ.
Мой вопрос: почему это происходит?
Это компилируется и работает нормально:
int Array[20][20][20][20][20];
int main()
{
return 0;
}
Компилируется, но выдает исключение переполнения стека при переносе в класс:
class Foo
{
int Array[20][20][20][20][20];
};
int main()
{
Foo foo;
return 0;
}
Я пытался изменить размер стека в параметрах компоновщика Visual Studio 2005, а также изменить параметр «Включить более крупные адреса», но, похоже, ничего не изменилось.