Реализация динамических матриц |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Реализация динамических матриц |
sheka |
12.04.2011 23:14
Сообщение
#1
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Цитата ...чтобы работать с динамическими матрицами, проще всего представить матрицу, как массив векторов... http://volvo71.narod.ru/faq_folder/dyn_arr.htm А как работать с ними если сделать "сложнее" (если объявить размерность через запятую). Вопрос тупой - прошу такой же ответ, т.к. задача стоит сортировать трехмерный массив и замерить время, а если использовать представление трехмерного массива как массив матриц, то показатели должны исказиться, что недопустимо. |
volvo |
12.04.2011 23:32
Сообщение
#2
|
Гость |
Цитата если использовать представление трехмерного массива как массив матриц, то показатели должны исказиться, что недопустимо. Показатели должны исказиться относительно чего, можно узнать?Что значит, Цитата (если объявить размерность через запятую). ? Как ты хочешь объявлять массивы, покажи... |
sheka |
13.04.2011 0:34
Сообщение
#3
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Время. Все дело во времени.
Вот как-то так: type ta = array[1..1 .. maxint div sizeof(TType),1 .. maxint div sizeof(TType)] :TType; Цель курсача: сравнивание времени сортировки вектора, трехмерного массива разной формы. Суммарное количество элементов одинаковое. Брр... скорее всего, я не тот вопрос задал. Вот "гвоздь программы": На сколько я понимаЛ, обращение к элементу массива a^[1] должно было быть дольше чем b[1], но вот эта программка на миллионе проверок выдает результаты одинаковые, то чуть больше в одну сторону, то в другую. Так ли это на самом деле? Код (Показать/Скрыть)
Вааще ниче не шарю: выводит такие результаты: 1921 2304 2288 Все наоборот.. FPC, win7. из под ДосБокса, к сожалению, не могу попробовать, чтобы принудительно уменьшить скорость процессора, поэтому брал количеством. |
Lapp |
13.04.2011 2:51
Сообщение
#4
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Разница во времени вряд ли велика и будет зависеть от оптимизации.
Вааще ниче не шарю: выводит такие результаты: 1921 2304 2288 Все наоборот.. FPC, win7. из под ДосБокса, к сожалению, не могу попробовать, чтобы принудительно уменьшить скорость процессора, поэтому брал количеством. А ты вообще обращаешь внимание на параметры компиляции? Вот результаты на моем компе. 1. Без оптимизации, с Range Check 872 844 844 2. С оптимизацией, с Range Check 391 272 262 3. С оптимизацией, без Range Check 262 261 260 А DosBox может существенно портить картину.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
sheka |
13.04.2011 20:25
Сообщение
#5
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
ДосБокс - для того, чтобы можно было посчитать время для массива 40*40*n (какое n - еще пока не придумал), но размер не очень большой.
Значит вы считаете, что скорость многоразового выполнения вот этого (того, что написано в каждой строчке) многоразово a[i,j,k] многоразово a[i][j][k] многоразово a^[i]^[j]^[k] однократно b := a^[i], а потом многоразово b^[j]^[k] однократно с := a^[i]^[j], а потом многоразово с^[k] будет одинаковой, т.е. разницей можно пренебречь даже для довольно малых размеров массива? Ваше мнение очень важно, т.к. еще раз повторюсь, что цель курсача: сравнивание времени сортировки вектора, трехмерного массива разной формы. Суммарное количество элементов одинаковое и если изменение времени будет как раз из-за того что я использовал как-то по разному обращение к элементам - это не хорошо. Сообщение отредактировано: sheka - 13.04.2011 20:27 |
volvo |
13.04.2011 20:57
Сообщение
#6
|
Гость |
Разницей во времени обращения можно пренебречь в данном случае. В Release-сборке различия несущественны. Другое дело - что, когда ты начнешь решать свою задачу, может быть не тот результат который есть сейчас. Сейчас ты тестируешь скорость обращения к одному (причем первому) элементу массива. Как только начнется обращение к разным элементам - картина может чуть-чуть поменяться. Но не сильно, не беспокойся, я сделал несколько прогонов, отличия - в 3-5 единиц. Это, опять же, несущественно.
Можешь проверить не время 1 млн. обращений, а количество тактов на каждое (одно) обращение: здесь лежит функция. Тоже, после нескольких прогонов, увидишь, что средние значения примерно равны. Цитата еще раз повторюсь, что цель курсача: Я еще раз не понимаю, почему надо использовать разные способы обращения к элементам? Не умеешь создавать динамический трехмерный массив? Учись . Создал массив A[1..2,1..3,1..5], массив B[1..5,1..1,1..6], и массив С[1..3,1..10,1..1]. Все три - динамические, у всех общее число элементов = 30, у всех одинаковый метод доступа. И сравнивай время сортировки...сравнивание времени сортировки вектора, трехмерного массива разной формы. Суммарное количество элементов одинаковое и если изменение времени будет как раз из-за того что я использовал как-то по разному обращение к элементам - это не хорошо. |
Lapp |
13.04.2011 23:37
Сообщение
#7
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
ДосБокс - для того, чтобы можно было посчитать время для массива 40*40*n (какое n - еще пока не придумал), но размер не очень большой. ДосБокс в качестве замедлителя?.. Это в корне неверный подход. Ты не знаешь, что в нем происходит. Используй многогратные проходы.И вообще, подобные исследования на современных процах с многоуровневым многомегабайтным кешем и в многозадачной системе - дело непростое. Плюс - проц наверняка 64-битный, в про систему ты не обмолвился.. Да тут параметров для учета больше, чем звезд на небе (well, в городе)). Сначала надо бы понять, что ты хочешь и поставить задачу точнее (учтя влияния всех компонент). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
sheka |
14.04.2011 0:13
Сообщение
#8
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Цитата Не умеешь создавать динамический трехмерный массив? C этим проблем нет. Цитата Я еще раз не понимаю, почему надо использовать разные способы обращения к элементам? .... Все три - динамические, у всех общее число элементов = 30, у всех одинаковый метод доступа. И сравнивай время сортировки... Так и буду делать, но вдруг там что-то придумаю, а так делать окажется нельзя.Цитата ДосБокс в качестве замедлителя?.. Это в корне неверный подход. Ты не знаешь, что в нем происходит. Используй многогратные проходы. Это уже не мне решать Цитата Сначала надо бы понять, что ты хочешь и поставить задачу точнее (учтя влияния всех компонент). ы.. тут ответ однозначный - Сдать А если серьезно, то задача очень простая(если не вникать в подробности ): Упорядочить отдельно каждое сечение трехмерного массива А [p, m, n] насквозь по колонкам по неубыванию. Проход по сечению разными вариантами. А вот тут моя больная фантазия бы наделала кучу процедур, передавала бы туда сечение итд итп, где-бы и применялись Цитата разные способы обращения к элементам . Но к счастью так делать нельзя и все надо писать слитным текстом. Так же если использовать дин. массив, то думал, что обращение к элементам будет существенно искажать результат. |
Lapp |
14.04.2011 0:24
Сообщение
#9
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
ы.. тут ответ однозначный - Сдать желаю успеха.. я больше в эт тему не глядец.. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
sheka |
16.04.2011 1:30
Сообщение
#10
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
Цитата ы.. тут ответ однозначный - Сдать А если серьезно Цитата желаю успеха.. я больше в эт тему не глядец.. Плох тот студент, который не желает сдать. |
Lapp |
16.04.2011 6:17
Сообщение
#11
|
Уникум Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Плох тот студент, который не желает сдать. Саш, я все понимаю и не хочу выгядеть ханжой (конечно, сдавай!), но и ты пойми: когда я не вижу способа посоветовать, исходя из разумных соображений, я лучше не буду советовать совсем (иначе я скорее помешаю, чем помогу). -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 30.09.2024 20:40 |