если нужен одномерный, делайте одномерный, нужен двухмерный делайте двухмерный. не нужно извращаться. производительность не упадет
Я тоже хочу, но пока-что вас этото вопрос интересует больше чем всех остальных. Проведите эксперимент и напишите о результатах.
Наконец руки дошли до эксперимента.
Делает тест с массивами типа [i][j] и [i*j]. i=2000, j=2000.
Присваивает каждому элементу число, и считает время. И повторяет это 100 раз, находит средне затраченное время для каждого типа. И выводит соотношение.
У меня получилось что [i][j] работает быстрей на 60-70%, чем [i*j], очевидно из-за операции умножение.
Максимальная размерность массива - 2.
В данной функции сделана ошибка. Для проверки достаточно распечать получаемые индексы.
int AT00(){ double ArrayTest[4000000]; StartTime=GetTickCount(); for(i=0;i<=2000;i++) for(j=0;j<=2000;j++) ArrayTest[i*j]=1.1; return(GetTickCount()-StartTime); }Более правильно считать индексы по другому [i*2000+j]
В данной функции сделана ошибка. Для проверки достаточно распечать получаемые индексы.
Более правильно считать индексы по другому [i*2000+j]Да, конечно, глупая ошибка.
Исправился и исправил:
Просто удобнее было бы сделать по другому
int AT00(){ double ArrayTest[4000000]; StartTime=GetTickCount(); for(i=0;i<=4000000;i++) ArrayTest[i]=1.1; return(GetTickCount()-StartTime); }В этом варианте выиграет АТ00
Ну мне то нужно было, чтобы в одномерный массив загнать двухмерный. Когда то давно, на С, делал двухмерные массивы и мне советовали их переделывать в одномерные типа [i*x+j]. Я никогда не понимал за чем это, думал так быстрее, и вот теперь решил проверить.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Какая отношение в производительности, если делать двумерный массив типа array[i][j], по сравнению с тем же переделанным в одномерный array[i*j].