Сейчас 17:47:09 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: PUVer, SirNikolas, Ty3uK  
Скилл Механика у Тинкера
FkoFFДата: Пятница, 05 Августа 2011, 19:14:06 | Сообщение # 26
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Hexing)
Я думаю ты не имеешь права судить об этом, пока не покажешь открытый код движка варика. В некоторых языках программирования(самых простых) boolean = integer = 4 байта. В норм языках вроде c++ это 1 байт. В delphi(насчет си не знаю) есть возможность создания "упаковок": packed record boolean, тоесть так как у булина 2 значения(аля бинарный код), можно создать суммарность по очень выгодной прогрессии (0-1+ 3-4 +...) и уместить в тех же 4 байтах ну очень большое количество булинов. Я думаю что хоть ты булин хоть интегер создавай, на современных компах это не проблема, един. проблема варика в утечках и только в них.

И к чему весь этот оффтоп? Були перезаписываются, это склярные типы, не являющиеся объектами и не происходят от handle. А ведь именно handle и все его дочерние переменные утечны.

В конце концов если речь о прелоаде - прелоадить надо то, что нагружает память. Були память не нагружают, нагружают память убогие конструкции

function Cond_02 takes nothing returns boolean
if not(YourCond==true) then
return false
else
return true
endif
endfunction

function Cond_03 takes nothing returns boolean
if not(YourCond==true) then
return false
else
return true
endif
endfunction
function Cond_01 takes nothing returns boolean
return And(Cond_02,Cond_03)
endfunction

Из-за таких вот массивных вызовов получается самый настоящий лютый капздец. Я как то делал переключение скиллов на гуи кнопками

Тоесть if Ability=="left arrow" then
if unitcur==one then
if unithas==twoforlearn then
change one to two
else
if unithas==threeforlearn then
change one to three
endif
endif
endif

как то так это все выглядело, только на гуи, и примерно в 40 раз больше, и вот именно тут вся веселуха и заключалась, казалось бы, не оперируется ни одним хэндлом (не создаются объекты), откуда утечки? Вы думаете були или булэкспры? Нет же, проблема в том что каждая функция, возвращавшая буль разветвлялась на две другие, а та еще на две другие. Всего условий было порядка 120. И да, это лагало. Не надо прелоадить були, надо оптимизировать методы.


 

HexingДата: Суббота, 06 Августа 2011, 09:31:12 | Сообщение # 27
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Проблема эдакого jass движка в том, что реализация "триггеров" или точнее их имитация, требует использование любой функции как виртуальной, а значит меньше условий = быстрее код. Имхо из-за таких вещей можно ваще не париться, есть намного более страшные вещи и мы в 2 уже давно оффтопим.

 

FkoFFДата: Суббота, 06 Августа 2011, 17:05:33 | Сообщение # 28
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
Quote (Hexing)
меньше условий = быстрее код

меньше посторонних ссылок == быстрее код, а не условий ) условия сами по себе много скорости не сожрут, если правильно расставить иф - он даже весь не будет проверяться, другое дело что подобные if\then\else триггерные конструкции делают сотню вызовов и, более того, всегда, аболсютно всегда проверяют все условия, что само по себе уже плохо.


 

  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz