Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 06.10.2006, 06:31   #1
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Dim vs Type

Вот решил сравнить скорость массива и списка (это я так Type называть буду).

Вот рабочий код програмки-сравнялки, предупреждаю сразу:

1) Отключить debug mode. Ибо в противном случае процесс может и затянуться.
2) Проверить размер свободной оперативы (140 метров надо). Ибо в противном случае пример будет тестить лишь винт (pagefile), что не является тем ради чего он писался.

; dim vs type
Graphics 640,480,16,2
font=LoadFont("courier new cyr",16,1)
SetFont font

Print "================================================= ============================"
Print "убедитесь что у вас свободной оперативы более 140 МБ"
Print "иначе этот тест будет тестить ваш жесткий диск (pagefile)"
Print " да у меня более 40 своболных метров и я нажму 1:"
g=Input("1- продолжить; не 1 закончить; =>" )
If g<>1 Then End
SeedRnd MilliSecs()



Type typ
Field value
End Type
Print "================================================= ============================"
Print " Dim vs Type"
Print "================================================= ============================"

mem=AvailPhysicalRAM()

a=MilliSecs()
Dim test(5000000)
For i=1 To 5000000
test(i)=Rnd(5000)
Next
dim_create=MilliSecs()-a

dim_mem=mem-AvailPhysicalRAM()
Print "Заполнение массива:"+Str(dim_create)
mem=AvailPhysicalRAM()
a=MilliSecs()
For i=1 To 5000000
t.typ=New typ
t\value=Rnd(5000)
Next
type_create=MilliSecs()-a
type_mem=mem-AvailPhysicalRAM()
Print "Заполнение списка:"+Str(type_create)
Print "================================================= ============================"
Print "памяти под массивом :"+dim_mem Shr 20 +" MB"
Print "памяти под списком :"+type_mem Shr 20 + " MB"
Print "================================================= ============================"


el=Rnd(5000)
find_dim=0
find_type=0
Print " поиск элемента :"+Str(el)
a=MilliSecs()
For i=1 To 5000000
If el=test(i) Then find_dim=find_dim+1
Next
dim_create=MilliSecs()-a
Print "Поиск в массиве:"+Str(dim_create) +", найдено:"+Str(find_dim)
a=MilliSecs()
For t.typ=Each typ
If t\value=el Then find_type=find_type+1
Next
type_create=MilliSecs()-a
Print "Поиск в списке:"+Str(type_create)+ ", найдено:"+Str(find_type)
Print "================================================= ============================"

a=MilliSecs()
Dim test(0)
dim_destroy=MilliSecs()-a
Print "Уничтожение массива:"+Str(dim_destroy)

a=MilliSecs()
Delete Each typ
dim_destroy=MilliSecs()-a
Print "Уничтожение списка:"+Str(dim_destroy)

Print "================================================= ============================"

a=MilliSecs()
Dim test(5000000)
dim_destroy=MilliSecs()-a
Print "Обнуление массива:"+Str(dim_destroy)
For i=1 To 5000000
t.typ=New typ
t\value=Rnd(5000)
Next
a=MilliSecs()
For t.typ=Each typ
t\value=0
Next
dim_destroy=MilliSecs()-a
Print "Обнуление списка:"+Str(dim_destroy)

Print "================================================= ============================"
Print "Нажми любую клавишу для выхода. PS: Сначало запомни результат"
Print "================================================= ============================"

WaitKey()
(Offline)
 
Ответить с цитированием
Старый 06.10.2006, 06:38   #2
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Dim vs Type

Тьфу, забыл. еще нужна либа: cpuspeed.
Если у вас ее нет то надо затереть все строчки где есть это:
AvailPhysicalRAM()

PS. Если-б я знал как приаттачивать файлы, е б ее приаттачил. а так можете поискать здесь: stormclub.net
(Offline)
 
Ответить с цитированием
Старый 06.10.2006, 08:39   #3
jimon
 
Сообщений: n/a
Re: Dim vs Type

а результаты можеж выложить ?
приатачить можно в расширеным режиме
там кнопка "управление вложеными файлами"
 
Ответить с цитированием
Старый 06.10.2006, 13:26   #4
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Dim vs Type

Еще один велосипед
__________________
(Offline)
 
Ответить с цитированием
Старый 06.10.2006, 23:35   #5
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Dim vs Type

Сообщение от jimon
а результаты можеж выложить ?
могу. в мс.
это все на celerone 433 с отключенным debug mode ессено
1463 - заполнение массива
3817 - заполнение списка
19 MB - под массивом
106 MB -под списком
275 - поиск в массиве
1816 - поиск в списке
20 - уничтожение массива
2441 - уничтожение списка
161 - обнуление массива
1782 - обнуление списка.

вот cpuspeed (либа)
Вложение 1860

насчет велосипедов. заниматься таким неблагородным делом конечно обидно, НО я нигде раньше не видел такого. так что уж извините.
(Offline)
 
Ответить с цитированием
Старый 06.10.2006, 23:45   #6
jimon
 
Сообщений: n/a
Re: Dim vs Type

довольно прогнозируемый результат
 
Ответить с цитированием
Старый 07.10.2006, 08:56   #7
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Re: Dim vs Type

Результат результатом, но что он дает? От типов отказываться в более или менее нормальном проекте нельзя. Если цель теста - привлечь внимание к массивам, то и так было ясно, что они работают быстрее. В программах используются как массивы, так и типы, просто нужно понимать, что последними не следует злоупотреблять. Но они обеспечивают намного более удобную работу с однотипными элементами, у которых может быть больше одного свойства.

Для полноты теста можно было в сравнение добавить массив типов.
(Offline)
 
Ответить с цитированием
Старый 07.10.2006, 17:15   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Dim vs Type

275 - поиск в массиве
1816 - поиск в списке
Что-то мне подсказывает, что бинарными деревьями там и не пахнет.
А так - при желании можно и не такой кож наваять )
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 07.10.2006, 17:17   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Dim vs Type

For i=1 To 5000000
t.typ=New typ
t\value=Rnd(5000)
Next
ЭТО не заполненение спика, это его инициализация и заполнение.
Большая разница, дальше даже смотреть не хочется
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 08.10.2006, 01:14   #10
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Dim vs Type

угу, надо заменить слово заполнение на слово инициализация, поскольку массив также инициализируется.
(Offline)
 
Ответить с цитированием
Старый 08.10.2006, 01:58   #11
НУБ
Бывалый
 
Регистрация: 22.09.2005
Сообщений: 634
Написано 36 полезных сообщений
(для 102 пользователей)
Re: Dim vs Type

ГЫ, ну ты даёшь ))
Какой смысл их сравнивать? Да ещё в таких тестах...

Начнём с того, что создание массива - просто выделение куска свободной памяти, а для создания структуры - её нужно создавать поэлементно

список у меня 75метров занимал, по сути вещей он должен быть ровно в 3 раза больше массива

a=MilliSecs()
Dim test(5000000)
dim_destroy=MilliSecs()-a
Print "Обнуление массива:"+Str(dim_destroy)
Опять же, ты его не обнуляешь, ты его заново создаёшь, т.е. выделяешь кусок заранее свободной памяти Точно так же и с удалением: память, занятая массивом, помечается свободной(но сама она не трогается).

Рас уж так нравятся подобные тесты, то ты забыл следующие, но очень важные:
- Удаление произвольного элемента.
- Вставка нового элемента в произвольное место.
- Перемещение элемента в произвольное место.
Думаю в этих тестах перевес будет немного в другую сторону
(Offline)
 
Ответить с цитированием
Старый 08.10.2006, 02:07   #12
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Re: Dim vs Type

Не вижу смысла мерить скорость инициализации. Она не критична.
А перебор массива на моем железе обгоняет тип всего на 25%
Выигрышь фпс мизерный (основное время занимает рендер), а вот геморроя с масивами - выше крыши.
__________________
(Offline)
 
Ответить с цитированием
Старый 08.10.2006, 02:26   #13
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Dim vs Type

Сообщение от Ньюб
ГЫ, ну ты даёшь ))
Рас уж так нравятся подобные тесты, то ты забыл следующие, но очень важные:
- Удаление произвольного элемента.
- Вставка нового элемента в произвольное место.
- Перемещение элемента в произвольное место.
Думаю в этих тестах перевес будет немного в другую сторону
Думаю в этих тестах перевес будет нАмного в другую чторону ,
особенно если при удалении сдвигать остальные элементы
(Offline)
 
Ответить с цитированием
Старый 08.10.2006, 14:30   #14
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Dim vs Type

Спасибо, Ньюб, именно это я и хотел сказать
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Type in Type Taugeshtu 2D-программирование 7 18.09.2009 08:36
Type and etc... ELIAS 2D-программирование 8 05.02.2009 19:34
Вопросик про TYPE TEHb08 Blitz3D 15 09.01.2009 23:06
Type - вопросы zheland BlitzMax 8 20.04.2008 19:10
Type, Function и т.д. Тарас Шевченко 2D-программирование 14 12.02.2007 17:09


Часовой пояс GMT +4, время: 16:58.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com