XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Warden
:::...
offline
Опыт: 26,106
Активность:
DLS (Data lists System)
Data Lists System - очень удобная игрушка для любителей оптимизации. Прием, который я в ней использовал, известен уже давно, так что это не очередной велосипед (© Jon).
Если вы не знали, то знайте, что такому игровому объекту, как location – можно прикрепить целых два объекта или числа с помощью нескольких хитрых приемов. Конечно, эта система не заменит вам кэш, но сократит его использование вдвое и оптимизирует ваш код на 50%. А так же даст много преимуществ, таких как прикрепить объекту два объекта.

Преимущества системы будут зависеть от того, как вы будете ее использовать – где вы будете хранить ваши data lists (точки) – в кэше или в массивах.

Первоначально система разработана для массивов, т.к один массив типа location может использоваться для любого handle и быть удвоен до 16384 объектов на один массив!

Вообщем описывать подробно не стану, но вкратце опишу основные функции :

» function InitLocationData takes integer x, integer y returns location
Создает data list(location) и записывает в него два объекта(числа) (Используется для переменных)


» function SetLocationXData takes location loc, integer x returns nothing
Изменяет данные X указанной тички

» function SetLocationYData takes location loc, integer x returns nothing
Изменяет данные Y указанной тички

» function GetLocationXData takes location loc returns integer
Возвращает данные записанные в X указанной точки

» function GetLocationYData takes location loc returns integer
Возвращает данные записанные в Y указанной точки


Остальные функции служебные и описания в этой теме не требуют, но стоит взглянуть на карту пример.

Если вы сразу что-нибудь не поняли, не опускайте руки – спрашивайте, и извините за такую сырую карту-пример…
Прикрепленные файлы
Тип файла: w3x Data Lists System.w3x (9.5 Кбайт, 11 просмотров )
Тип файла: txt DLS.txt (1.4 Кбайт, 12 просмотров )
Старый 30.08.2007, 09:28
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
Warden, я тут посмотрел твою систему...работает она в точности как SCV, тока в SCV данные записываются в кэш, а тут, как я понял, нужно в переменную...принцып один и тот же - RB...ну в принцыпе твоя система позволяет записать не 2 значения в 2 переменные(X,Y), а 2 значения в одну переменную(location)...конечно вариант, но я все-таки буду тальше юзать SCV...думаю, другие тоже.
Старый 30.08.2007, 10:08
J
expert
offline
Опыт: 48,447
Активность:
невижу преимещуств пред кешем... я бы несказал что это работает быстрее...
Старый 30.08.2007, 10:12
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
лисапед, в кастер системе такое есть :D
сейчас я точно скажу, насколько он быстрей/медленней кэша(вроде быстрей)
Старый 30.08.2007, 10:16
Warden
:::...
offline
Опыт: 26,106
Активность:
Jon - быстрее... - спроси у Vexorian-а
Старый 30.08.2007, 10:16
J
expert
offline
Опыт: 48,447
Активность:
может и быстре.. но сам факт использования функций при возвращении/запеси снижают скорость... нужно юать арифмет. действия онли, тогда быстро будет
Старый 30.08.2007, 10:17
Warden
:::...
offline
Опыт: 26,106
Активность:
df Hunter - в кастер системе немного подругому... но принцип тот же. Систему я делал сам и точно не помню, что в кастер системе... поню только, что там груда ненужного кода.

Warden добавил:
Jon - ты ведь сам против кэша - а для массивов эта система незаменима... - просто нужно немного подругому приподнести...
Старый 30.08.2007, 10:19
J
expert
offline
Опыт: 48,447
Активность:
для динамичесого (не статичного) выделения ячеек масива для сопостовления кокомунибудь обьекту достаточно думаю размера 500 на всю карту...

для динамечного я юзаю одну систему.. для статичного другую... но это уже другая история

Jon добавил:
Warden будет оптимальнее соидинить 2 масива через ифы, чем делать через точки
Старый 30.08.2007, 10:22
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
кэш уходит в сторону, у меня получилось так, что о_О от 20 до 40 раз локации быстрей массивов
Старый 30.08.2007, 10:39
J
expert
offline
Опыт: 48,447
Активность:
Цитата:
от 20 до 40 раз локации быстрей массивов

O_O
а ты как проверяеш производительность если не секрет?
Старый 30.08.2007, 10:41
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
Цитата:
Сообщение от Jon
O_O
а ты как проверяеш производительность если не секрет?

JAPI StopWatchTimer

df Hunter добавил:
Цитата:
Сообщение от Jon
O_O
а ты как проверяеш производительность если не секрет?

ты думаешь я сам поверил? :), неа. я еще раз 15 перепроверил

df Hunter добавил:
З.Ы. проверка шла на запись + чтение
Старый 30.08.2007, 10:56
adic3x

offline
Опыт: 108,439
Активность:
увелечение массивов даже в два раза кешь незаменит=/
а вообще идея понравилась=)
Старый 30.08.2007, 13:13
Toadcop

offline
Опыт: 54,313
Активность:
вообщем безусловно всё здесь фигня...
1) конечно это медленей массивов (не слушайте идиотский сказаки... В ВАРЕ НЕТУ НИЧЕГО БЫСТРЕЙ ПЕРЕМЕНЫХ И МАССИВОВ !)
2) оно чуть быстрей кеша
3) обсалютный бред который ничего не делает.

iNfraNe по крйней мере знал что он делал как здесь видно автор ничего не знал что он делал.

Цитата:
спроси у Vexorian
при последнем споре с Вексом я выиграл :Р
Старый 30.08.2007, 14:25
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
в моем тесте был глюк, поэтому он ошибочный, location медленней в 4 раза массивов(это минимум)
Старый 30.08.2007, 14:40
Alex_Hell
Mapmaker 'N' Programmer
offline
Опыт: 6,885
Активность:
+ каждый раз при записи данных с помощью твоей системы создается новая локация(2 переменных real)...такчто лучше юзать либо SCV, либо обычные переменные!
Старый 30.08.2007, 14:54
df Hunter
Нападатель
offline
Опыт: 5,749
Активность:
по теме:
варден убери лучше РБ функции i2r и получения локаций, там не всё корректно с ними, у меня из-за этого была ошибка теста
offtop:
Alex_Hell
про подпись
function Code2I takes code callback returns integer
return callback
return 0
endfunction
тут код не вызывается, поэтому я думаю не callback,а func, смени
Старый 30.08.2007, 15:20
Warden
:::...
offline
Опыт: 26,106
Активность:
Ладно, можно забить на эту идею...
Старый 30.08.2007, 15:37
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 09:10.