![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
Custom Struct Allocator macro
((код jass
! textmacro CSA takes NAME
globals integer array CSA_$NAME$ endglobals function PICK_$NAME$ takes nothing returns integer
set CSA_$NAME$[0] = CSA_$NAME$[0] + 1 return CSA_$NAME$[0] - CSA_$NAME$[CSA_$NAME$[0]] endfunction function DROP_$NAME$ takes integer I returns nothing
set CSA_$NAME$[CSA_$NAME$[0]] = CSA_$NAME$[0] - I set CSA_$NAME$[0] = CSA_$NAME$[0] - 1 endfunction ! endtextmacro )) Этот хитрый код на 50% (оплимит) и 20% (вочдог) быстрее встроенного в vJass аллокатора, в принципе можно рекомендовать всем любителям оптимизации.
держит 10715 вызова (против 7143 стандартного) то есть можно выделить целый массив внутри одного потока.
ну еще он гораздо гораздо короче и намного сложнее в восприятии, такая функция в принципе может заставить задуматься если вашу карту станут "ломать".
Работает хитрым образом, дальнейшая оптимизация алгоритма не возможна в принципе. Отредактировано Nekit1234007, 13.02.2011 в 00:52. |
![]() |
#1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
SwuJe
aka Sakh_badboy
![]() ![]() offline
Опыт:
15,238Активность: |
DioD, а теперь поподробней какой она вызывает эфект |
![]() |
#2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
эффект деления на ноль с последующим уничтожением вселенно.
еще вопросы? |
![]() |
#3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Лекс
![]() ![]() offline
Опыт:
3,280Активность: |
DioD, это гениально Холмс =) |
![]() |
#4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
Toadcop
![]() ![]() offline
Опыт:
54,313Активность: |
тока в рабочей карте из за такого аллокатора будет больше проблем чем пользы. самое важное то что аллокатор вызыватся редко тем самым его скорость выполнения не критична. Важна надёжность.
|
![]() |
#5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
не думаю что из за такого аллокатора возник большие проблемы чем при использовании стандартного, во втором случае вы просто напросто получите сообщение об ошибке, которое само по себе геймплей не воскресит.
|
![]() |
#6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
ScorpioT1000
Работаем
![]() ![]() offline
Опыт: отключен
|
ты гений ! |
![]() |
#7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
DioD
![]() ![]() offline
Опыт:
45,134Активность: |
кстати я так и не нашел как называется этот алгоритм, ясен пень что его придумали давным давно.
|
![]() |
#8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
![]()
9thNerZul
forum/warcraft3
![]() ![]() offline
Опыт:
4,869Активность: |
Toadcop:
Заставит задуматься но можно и проигнорировать, не вставлять же самое нужное место? |
![]() |
#9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|