IPB
ЛогинПароль:

> Правила раздела!

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
А как работать с ними если сделать "сложнее" (если объявить размерность через запятую).
Вопрос тупой - прошу такой же ответ, т.к. задача стоит сортировать трехмерный массив и замерить время, а если использовать представление трехмерного массива как массив матриц, то показатели должны исказиться, что недопустимо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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. из под ДосБокса, к сожалению, не могу попробовать, чтобы принудительно уменьшить скорость процессора, поэтому брал количеством.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 13.04.2011 2:51
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Разница во времени вряд ли велика и будет зависеть от оптимизации.
Цитата(sheka @ 13.04.2011 1:34) *
Вааще ниче не шарю:
выводит такие результаты:
1921
2304
2288
Все наоборот..
FPC, win7. из под ДосБокса, к сожалению, не могу попробовать, чтобы принудительно уменьшить скорость процессора, поэтому брал количеством.

А ты вообще обращаешь внимание на параметры компиляции?
Вот результаты на моем компе.
1. Без оптимизации, с Range Check
872
844
844

2. С оптимизацией, с Range Check
391
272
262

3. С оптимизацией, без Range Check
262
261
260

А DosBox может существенно портить картину..



--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
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  +


Цитата(sheka @ 13.04.2011 21:25) *
ДосБокс - для того, чтобы можно было посчитать время для массива 40*40*n (какое n - еще пока не придумал), но размер не очень большой.
ДосБокс в качестве замедлителя?.. blink.gif Это в корне неверный подход. Ты не знаешь, что в нем происходит. Используй многогратные проходы.

И вообще, подобные исследования на современных процах с многоуровневым многомегабайтным кешем и в многозадачной системе - дело непростое. Плюс - проц наверняка 64-битный, в про систему ты не обмолвился.. Да тут параметров для учета больше, чем звезд на небе (well, в городе)). Сначала надо бы понять, что ты хочешь и поставить задачу точнее (учтя влияния всех компонент).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 14.04.2011 0:13
Сообщение #8


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата
Не умеешь создавать динамический трехмерный массив?
C этим проблем нет.
Цитата
Я еще раз не понимаю, почему надо использовать разные способы обращения к элементам? .... Все три - динамические, у всех общее число элементов = 30, у всех одинаковый метод доступа. И сравнивай время сортировки...
Так и буду делать, но вдруг там что-то придумаю, а так делать окажется нельзя.
Цитата
ДосБокс в качестве замедлителя?.. Это в корне неверный подход. Ты не знаешь, что в нем происходит. Используй многогратные проходы.
Это уже не мне решать smile.gif
Цитата
Сначала надо бы понять, что ты хочешь и поставить задачу точнее (учтя влияния всех компонент).
ы.. тут ответ однозначный - Сдать lol.gif
А если серьезно, то задача очень простая(если не вникать в подробности smile.gif ):
Упорядочить отдельно каждое сечение трехмерного массива А [p, m, n] насквозь по колонкам по неубыванию.
Проход по сечению разными вариантами.

А вот тут моя больная фантазия бы наделала кучу процедур, передавала бы туда сечение итд итп, где-бы и применялись
Цитата
разные способы обращения к элементам
. Но к счастью так делать нельзя и все надо писать слитным текстом. Так же если использовать дин. массив, то думал, что обращение к элементам будет существенно искажать результат.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 14.04.2011 0:24
Сообщение #9


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(sheka @ 14.04.2011 1:13) *
ы.. тут ответ однозначный - Сдать lol.gif

желаю успеха..
я больше в эт тему не глядец..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 16.04.2011 1:30
Сообщение #10


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата
ы.. тут ответ однозначный - Сдать
А если серьезно

Цитата
желаю успеха..
я больше в эт тему не глядец..

Плох тот студент, который не желает сдать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 16.04.2011 6:17
Сообщение #11


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(sheka @ 16.04.2011 2:30) *
Плох тот студент, который не желает сдать.

Саш, я все понимаю и не хочу выгядеть ханжой (конечно, сдавай!), но и ты пойми: когда я не вижу способа посоветовать, исходя из разумных соображений, я лучше не буду советовать совсем (иначе я скорее помешаю, чем помогу).


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 29.03.2024 10:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"