quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
Вопрос про структуры
Народ подскажите метод сохранения одной и той же структуры на разные объекты, чтобы не создавать и удалять структуру а вешать её на юнита\таймер\юнита и так до бесконечности... Я слышал про TimerUtils но мне нужно и еще на самого юнита сохранить структуру, без использования хеш конструкций (как сделать с хешем я и так знаю)... На счёт глобального массива, ну сохраню я туда структуру, а на юнита тогда придется вешать CustomValue с номером ячейки, не придумано ли способа по оптимальней... Отредактировано quq_CCCP, 21.05.2012 в 04:58. |
21.05.2012, 04:52 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
Куда уж оптимальней? Всё ты уже знаешь =) Сделай супер кастом велью, вот тут быстро xgm.ru/forum/showthread.php?t=12894 чтобы на юнита можно было вешать несколько независимых структур, но лучше хеш, конечно, если тебе не надо обратной совместимости. (мне в jc надо было и я юзал метод перебора / cv) |
21.05.2012, 05:01 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
ScorpioT1000, тут я уже запутался с решениями, допустим 100 структру созадли с данными, затем повешали на юнитов, за тем на таймеры, дык еще и нужно их изменять иди удалять... Ну хочу сбацать структуры с массивами предметов, которые могу выпасть из юнитов... а чтобы не орали типо хеш медленный, решил спросить про массивы... |
21.05.2012, 05:13 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Master_chan
Полуночный командир
offline
Опыт:
15,660Активность: |
quq_CCCP:
То что хеш медленнее массивов не значит что он медленнее настолько что его уже нельзя использовать. |
21.05.2012, 05:21 | #4
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
Master_chan, эт я хнаю, но меня уже раза 4 точно облиняли что я юзаю хеш в наработках, они ведь для людей, а значит должны быть идеальны, в том числи и по производительности... Ну сам я понимаю что визуально разницы видно не будет... Да и кастати, как насчёт юзать уменьшенный хендл юнита как ключ к структуре?, то кастом валуюе часто юзают для других целей... |
21.05.2012, 05:24 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Master_chan
Полуночный командир
offline
Опыт:
15,660Активность: |
У нас на форуме есть особая каста людей которые сами ничего не делают, только поливают говном других.
Можешь использовать (хендл - опр. константа) как ключ, но мне кажется с хешем проще. |
21.05.2012, 05:30 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
ScorpioT1000, Попробую с системой ToadCop'a, с точки зрения написания она значительно упрощает жизнь...
quq_CCCP добавил:
Лан покато спс, пусть часиков 6 будет открыта. когда выложу результаты посмотрим и закроем... quq_CCCP добавил:
Ну собственно вот код, сделано по варианту ScorpioT1000, с использованием наработки Toadcop, Код возрос в разы, разница в производительности с хешем заметна лиш когда вся карта забита юнитами и их одновременно убивают..
» код cистемки
((код jass
scope CreepRespawnSystem initializer InitCreps
====================================================================
private struct UnitData структуру нетронять не в коем случаи... real CreepX real CreepY real CreepA real ResTime integer LevelOrType boolean UseAltrnateTimer = false endstruct ===================================================================== globals// вот тут все настройки boolean bj_DESTROY_CORPSE = true удалять трупы умерших крипов. boolean bj_SHOW_DEATH_EFFECT = true показать спецэффект при смерте крипа boolean bj_SHOW_RESPAWN_EFFECT = true показать спецэфект при респауне boolean bj_RANDOM_CREEP_TYPE = true респаунить каждый раз разных крипов но одного и того же уровня boolean bj_CHECK_REPAWN_POS = false// проверять видит ли игрок точку респауна, и если видит пропустить респаун string bj_DEATH_EFFECT = "Abilities\\Spells\\Orc\\FeralSpirit\\feralspiritdone.mdl" спецэффект при смерти крипа string bj_RESPAWN_EFFECT = "Abilities\\Spells\\Human\\Resurrect\\ResurrectTarget.mdl" спецэффект при респауне крипа real bj_CREEP_SAVE_INTERVAL = 0.20 задержка перед работой системы... Необходимо в тех картах где создание крипов просиходит во время игры. real bj_RESP_TIMEOUT = 1.00 время чеерез которую возродится крип... В данном случае умножвется на его уровень. private constant player bj_PLAYER_NEUTRAL_AGGRESSIVE = Player( 12 ) Нетрально враждебный, если в вашей крате вы использует другоuо игрока то введите его номер в Player( № ) вспомогательные переменные системы не рекомендуется их изменение private unit bj_Neutral_Creep private timer bj_RespawnTimer private UnitData bj_UnitData private location bl_TempPoint endglobals private function bj_creepRespTimeout takes nothing returns real задержка перед респауном крипа можно вести конкретное время или выражение
return bj_RESP_TIMEOUT * GetUnitLevel( GetDyingUnit( ) ) в данном случие врмя респауна равно уровень крипа умнноженный на bj_RESP_TIMEOUT ( 2 сек ) endfunction private function Bolexp_UnitFiler_Conditions takes nothing returns boolean фильтр сохраннения нетрально враждебынх юнитов
return GetOwningPlayer( GetFilterUnit( ) ) == bj_PLAYER_NEUTRAL_AGGRESSIVE в данном случее проходят все юниты подконтрольные игроку bj_PLAYER_NEUTRAL_AGGRESSIVE endfunction через and можно добавить дополнительыне критерии отбора. далее вмешательство в код настоятельно не рекомендуется... ********************************************************************************************************************************************** ********************************************************************************************************************************************** function CreateCreepOfType takes integer CreepType, real SX, real SY, real SA, real timeout returns unit set bj_UnitData = UnitData.create( ) set bj_lastCreatedUnit = CreateUnit( bj_PLAYER_NEUTRAL_AGGRESSIVE, CreepType, SX, SY, SA ) set bj_UnitData.CreepX = SX set bj_UnitData.CreepY = SY set bj_UnitData.CreepA = SA set bj_UnitData.ResTime = timeout set bj_UnitData.UseAltrnateTimer = true if bj_RANDOM_CREEP_TYPE then set bj_UnitData.LevelOrType = GetUnitLevel( bj_lastCreatedUnit ) else set bj_UnitData.LevelOrType = 3 endif call SetDataBX( bj_lastCreatedUnit, bj_UnitData ) return bj_lastCreatedUnit endfunction function RemoveCreep takes unit fp_uCreep returns nothing
set bj_UnitData = GetDataBX( fp_uCreep ) call bj_UnitData.destroy( ) call RemoveDataBX( fp_uCreep ) call RemoveUnit( fp_uCreep ) set fp_uCreep = null endfunction private function Group_SaveCrepsPos_Actions takes nothing returns nothing
set bj_Neutral_Creep = GetEnumUnit( ) set bj_UnitData = UnitData.create( ) set bj_UnitData.CreepX = GetUnitX( bj_Neutral_Creep ) set bj_UnitData.CreepY = GetUnitY( bj_Neutral_Creep ) set bj_UnitData.CreepA = GetUnitFacing( bj_Neutral_Creep ) set bj_UnitData.ResTime = 0.00 if bj_RANDOM_CREEP_TYPE then set bj_UnitData.LevelOrType = GetUnitLevel( bj_Neutral_Creep ) else set bj_UnitData.LevelOrType = GetUnitTypeId( bj_Neutral_Creep ) endif call SetDataBX( bj_Neutral_Creep, bj_UnitData ) endfunction private function AddSpecialEffectZ takes string path, real x, real y, real z returns effect
set bl_TempPoint = Location( x, y ) set z = z + GetLocationZ( bl_TempPoint ) + 10.00 call RemoveLocation( bl_TempPoint ) set bj_lastCreatedDestructable = CreateDestructableZ( 'OTip', x, y, z, 0.00, 1, 0 ) set bj_lastCreatedEffect = AddSpecialEffect( path, x, y ) call RemoveDestructable( bj_lastCreatedDestructable ) return bj_lastCreatedEffect endfunction private function IsSpawnPosVisibly_Conditions takes real PX, real PY returns boolean local integer nIndex = 0 if not bj_CHECK_REPAWN_POS then return true endif loop exitwhen nIndex > bj_MAX_PLAYER_SLOTS if ( IsVisibleToPlayer( PX, PY, Player( nIndex ) ) ) then return false endif set nIndex = nIndex + 1 endloop return true endfunction private function Timer_Creep_Respawn_Actions takes nothing returns nothing
set bj_RespawnTimer = GetExpiredTimer( ) set bj_UnitData = GetDataBX( bj_RespawnTimer ) if IsSpawnPosVisibly_Conditions( bj_UnitData.CreepX, bj_UnitData.CreepY ) then if bj_RANDOM_CREEP_TYPE then call DisplayTextToPlayer( Player( 0 ), 0, 0, "Сработало" ) call DisplayTextToPlayer( Player( 0 ), 0, 0, I2S(bj_UnitData.LevelOrType) ) call DisplayTextToPlayer( Player( 0 ), 0, 0, R2S(bj_UnitData.CreepX) ) call DisplayTextToPlayer( Player( 0 ), 0, 0, R2S(bj_UnitData.CreepY) ) set bj_Neutral_Creep = CreateUnit( bj_PLAYER_NEUTRAL_AGGRESSIVE, ChooseRandomCreep( bj_UnitData.LevelOrType ), bj_UnitData.CreepX, bj_UnitData.CreepY, bj_UnitData.CreepA ) else call DisplayTextToPlayer( Player( 0 ), 0, 0, "Сработало 2" ) set bj_Neutral_Creep = CreateUnit( bj_PLAYER_NEUTRAL_AGGRESSIVE, bj_UnitData.LevelOrType, bj_UnitData.CreepX, bj_UnitData.CreepY, bj_UnitData.CreepA ) endif if bj_SHOW_RESPAWN_EFFECT then call DestroyEffect( AddSpecialEffectTarget( bj_RESPAWN_EFFECT, bj_Neutral_Creep, "origin" ) ) endif call SetDataBX( bj_Neutral_Creep, bj_UnitData ) call RemoveDataBX( bj_RespawnTimer ) call PauseTimer( bj_RespawnTimer ) call DestroyTimer( bj_RespawnTimer ) endif endfunction private function Trig_Creep_Resp_Actions takes nothing returns nothing
set bj_RespawnTimer = CreateTimer( ) set bj_Neutral_Creep = GetDyingUnit( ) set bj_UnitData = GetDataBX( bj_Neutral_Creep ) call SetDataBX( bj_RespawnTimer, bj_UnitData ) call RemoveDataBX( bj_Neutral_Creep ) if ( bj_SHOW_DEATH_EFFECT and bj_DESTROY_CORPSE and IsUnitType( bj_Neutral_Creep, UNIT_TYPE_FLYING ) ) then call DestroyEffect( AddSpecialEffectZ( bj_DEATH_EFFECT, GetUnitX( bj_Neutral_Creep ), GetUnitY( bj_Neutral_Creep ), GetUnitFlyHeight( bj_Neutral_Creep ) ) ) elseif bj_SHOW_DEATH_EFFECT then call DestroyEffect( AddSpecialEffect( bj_DEATH_EFFECT, GetUnitX( bj_Neutral_Creep ), GetUnitY( bj_Neutral_Creep ) ) ) endif if ( bj_DESTROY_CORPSE ) then call RemoveUnit( bj_Neutral_Creep ) endif if bj_UnitData.UseAltrnateTimer then call TimerStart( bj_RespawnTimer, bj_UnitData.ResTime, true, function Timer_Creep_Respawn_Actions ) else call TimerStart( bj_RespawnTimer, bj_creepRespTimeout( ), true, function Timer_Creep_Respawn_Actions ) endif endfunction private function SaveCreepRespPos takes nothing returns nothing local group grp = CreateGroup( ) local boolexpr NeutralFilter = Condition( function Bolexp_UnitFiler_Conditions ) local trigger trg = CreateTrigger( ) call TriggerRegisterPlayerUnitEvent( trg, bj_PLAYER_NEUTRAL_AGGRESSIVE, EVENT_PLAYER_UNIT_DEATH, null ) call TriggerAddAction( trg, function Trig_Creep_Resp_Actions ) call DestroyTimer( GetExpiredTimer( ) ) call GroupEnumUnitsInRect( grp, bj_mapInitialPlayableArea, NeutralFilter ) call ForGroup( grp, function Group_SaveCrepsPos_Actions ) call DestroyGroup( grp ) call DestroyBoolExpr( NeutralFilter ) set NeutralFilter = null set trg = null set grp = null endfunction private function InitCreps takes nothing returns nothing set bj_lastCreatedHashtable = InitHashtable( ) call TimerStart( CreateTimer( ), bj_CREEP_SAVE_INTERVAL, false, function SaveCreepRespPos ) endfunction endscope )) Версия где используется Handle - 0x100000 в качестве ключа
((кат Еще версия
((код jass
library CreepRespawnSystem initializer InitCreps
====================================================================
private struct UnitData структуру нетронять не в коем случаи... real CreepX real CreepY real CreepA real ResTime integer LevelOrType boolean UseAltrnateTimer = false endstruct ===================================================================== globals// вот тут все настройки boolean bj_DESTROY_CORPSE = true удалять трупы умерших крипов. boolean bj_SHOW_DEATH_EFFECT = true показать спецэффект при смерте крипа boolean bj_SHOW_RESPAWN_EFFECT = true показать спецэфект при респауне boolean bj_RANDOM_CREEP_TYPE = true респаунить каждый раз разных крипов но одного и того же уровня boolean bj_CHECK_REPAWN_POS = false// проверять видит ли игрок точку респауна, и если видит пропустить респаун string bj_DEATH_EFFECT = "Abilities\\Spells\\Orc\\FeralSpirit\\feralspiritdone.mdl" спецэффект при смерти крипа string bj_RESPAWN_EFFECT = "Abilities\\Spells\\Human\\Resurrect\\ResurrectTarget.mdl" спецэффект при респауне крипа real bj_CREEP_SAVE_INTERVAL = 0.20 задержка перед работой системы... Необходимо в тех картах где создание крипов просиходит во время игры. real bj_RESP_TIMEOUT = 1.00 время чеерез которую возродится крип... В данном случае умножвется на его уровень. private constant player bj_PLAYER_NEUTRAL_AGGRESSIVE = Player( 12 ) Нетрально враждебный, если в вашей крате вы использует другоuо игрока то введите его номер в Player( № ) вспомогательные переменные системы не рекомендуется их изменение private unit bj_Neutral_Creep private timer bj_RespawnTimer private UnitData array bj_UnitData private UnitData bj_data private location bl_TempPoint private constant integer OFFSET = 0x100000 endglobals private function bj_creepRespTimeout takes nothing returns real задержка перед респауном крипа можно вести конкретное время или выражение
return bj_RESP_TIMEOUT * GetUnitLevel( GetDyingUnit( ) ) в данном случие врмя респауна равно уровень крипа умнноженный на bj_RESP_TIMEOUT ( 2 сек ) endfunction private function Bolexp_UnitFiler_Conditions takes nothing returns boolean фильтр сохраннения нетрально враждебынх юнитов
return GetOwningPlayer( GetFilterUnit( ) ) == bj_PLAYER_NEUTRAL_AGGRESSIVE в данном случее проходят все юниты подконтрольные игроку bj_PLAYER_NEUTRAL_AGGRESSIVE endfunction через and можно добавить дополнительыне критерии отбора. далее вмешательство в код настоятельно не рекомендуется... ********************************************************************************************************************************************** ********************************************************************************************************************************************** function StoreStruct takes handle h, integer st returns nothing set bj_UnitData[GetHandleId( h ) - OFFSET] = st endfunction function GetStoredStruct takes handle h returns integer return bj_UnitData[GetHandleId( h ) - OFFSET] endfunction function FlushStoredStruct takes handle h, integer st returns nothing call bj_UnitData[GetHandleId( h ) - OFFSET].destroy( ) endfunction function CreateCreepOfType takes integer CreepType, real SX, real SY, real SA, real timeout returns unit set bj_lastCreatedUnit = CreateUnit( bj_PLAYER_NEUTRAL_AGGRESSIVE, CreepType, SX, SY, SA ) set bj_data = UnitData.create( ) set bj_data.CreepX = SX set bj_data.CreepY = SY set bj_data.CreepA = SA set bj_data.ResTime = timeout set bj_data.UseAltrnateTimer = true if bj_RANDOM_CREEP_TYPE then set bj_data.LevelOrType = GetUnitLevel( bj_lastCreatedUnit ) else set bj_data.LevelOrType = 3 endif call StoreStruct( bj_lastCreatedUnit, bj_data ) return bj_lastCreatedUnit endfunction function RemoveCreep takes unit fp_uCreep returns nothing
call FlushStoredStruct(fp_uCreep) call RemoveUnit( fp_uCreep ) set fp_uCreep = null endfunction private function Group_SaveCrepsPos_Actions takes nothing returns nothing
set bj_Neutral_Creep = GetEnumUnit( ) set bj_data = UnitData.create( ) set bj_data.CreepX = GetUnitX( bj_Neutral_Creep ) set bj_data.CreepY = GetUnitY( bj_Neutral_Creep ) set bj_data.CreepA = GetUnitFacing( bj_Neutral_Creep ) set bj_data.ResTime = 0.00 if bj_RANDOM_CREEP_TYPE then set bj_data.LevelOrType = GetUnitLevel( bj_Neutral_Creep ) else set bj_data.LevelOrType = GetUnitTypeId( bj_Neutral_Creep ) endif call StoreStruct( bj_Neutral_Creep, bj_data ) endfunction private function AddSpecialEffectZ takes string path, real x, real y, real z returns effect
set bl_TempPoint = Location( x, y ) set z = z + GetLocationZ( bl_TempPoint ) + 10.00 call RemoveLocation( bl_TempPoint ) set bj_lastCreatedDestructable = CreateDestructableZ( 'OTip', x, y, z, 0.00, 1, 0 ) set bj_lastCreatedEffect = AddSpecialEffect( path, x, y ) call RemoveDestructable( bj_lastCreatedDestructable ) return bj_lastCreatedEffect endfunction private function IsSpawnPosVisibly_Conditions takes real PX, real PY returns boolean local integer nIndex = 0 if not bj_CHECK_REPAWN_POS then return true endif loop exitwhen nIndex > bj_MAX_PLAYER_SLOTS if ( IsVisibleToPlayer( PX, PY, Player( nIndex ) ) ) then return false endif set nIndex = nIndex + 1 endloop return true endfunction private function Timer_Creep_Respawn_Actions takes nothing returns nothing
set bj_RespawnTimer = GetExpiredTimer( ) set bj_data = GetStoredStruct( bj_RespawnTimer ) if IsSpawnPosVisibly_Conditions( bj_data.CreepX, bj_data.CreepY ) then if bj_RANDOM_CREEP_TYPE then call DisplayTextToPlayer( Player( 0 ), 0, 0, "Сработало" ) call DisplayTextToPlayer( Player( 0 ), 0, 0, I2S( bj_data.LevelOrType ) ) call DisplayTextToPlayer( Player( 0 ), 0, 0, R2S( bj_data.CreepX ) ) call DisplayTextToPlayer( Player( 0 ), 0, 0, R2S( bj_data.CreepY ) ) set bj_Neutral_Creep = CreateUnit( bj_PLAYER_NEUTRAL_AGGRESSIVE, ChooseRandomCreep( bj_data.LevelOrType ), bj_data.CreepX, bj_data.CreepY, bj_data.CreepA ) else call DisplayTextToPlayer( Player( 0 ), 0, 0, "Сработало 2" ) set bj_Neutral_Creep = CreateUnit( bj_PLAYER_NEUTRAL_AGGRESSIVE, bj_data.LevelOrType, bj_data.CreepX, bj_data.CreepY, bj_data.CreepA ) endif if bj_SHOW_RESPAWN_EFFECT then call DestroyEffect( AddSpecialEffectTarget( bj_RESPAWN_EFFECT, bj_Neutral_Creep, "origin" ) ) endif call StoreStruct( bj_Neutral_Creep, bj_data ) call FlushStoredStruct( bj_RespawnTimer ) call PauseTimer( bj_RespawnTimer ) call DestroyTimer( bj_RespawnTimer ) endif endfunction private function Trig_Creep_Resp_Actions takes nothing returns nothing
set bj_RespawnTimer = CreateTimer( ) set bj_Neutral_Creep = GetDyingUnit( ) set bj_data = GetStoredStruct( bj_Neutral_Creep ) call StoreStruct( bj_RespawnTimer, bj_data ) call FlushStoredStruct( bj_Neutral_Creep ) if ( bj_SHOW_DEATH_EFFECT and bj_DESTROY_CORPSE and IsUnitType( bj_Neutral_Creep, UNIT_TYPE_FLYING ) ) then call DestroyEffect( AddSpecialEffectZ( bj_DEATH_EFFECT, GetUnitX( bj_Neutral_Creep ), GetUnitY( bj_Neutral_Creep ), GetUnitFlyHeight( bj_Neutral_Creep ) ) ) elseif bj_SHOW_DEATH_EFFECT then call DestroyEffect( AddSpecialEffect( bj_DEATH_EFFECT, GetUnitX( bj_Neutral_Creep ), GetUnitY( bj_Neutral_Creep ) ) ) endif if ( bj_DESTROY_CORPSE ) then call RemoveUnit( bj_Neutral_Creep ) endif if bj_data.UseAltrnateTimer then call TimerStart( bj_RespawnTimer, bj_data.ResTime, true, function Timer_Creep_Respawn_Actions ) else call TimerStart( bj_RespawnTimer, bj_creepRespTimeout( ), true, function Timer_Creep_Respawn_Actions ) endif endfunction private function SaveCreepRespPos takes nothing returns nothing local group grp = CreateGroup( ) local boolexpr NeutralFilter = Condition( function Bolexp_UnitFiler_Conditions ) local trigger trg = CreateTrigger( ) call TriggerRegisterPlayerUnitEvent( trg, bj_PLAYER_NEUTRAL_AGGRESSIVE, EVENT_PLAYER_UNIT_DEATH, null ) call TriggerAddAction( trg, function Trig_Creep_Resp_Actions ) call DestroyTimer( GetExpiredTimer( ) ) call GroupEnumUnitsInRect( grp, bj_mapInitialPlayableArea, NeutralFilter ) call ForGroup( grp, function Group_SaveCrepsPos_Actions ) call DestroyGroup( grp ) call DestroyBoolExpr( NeutralFilter ) set NeutralFilter = null set trg = null set grp = null endfunction private function InitCreps takes nothing returns nothing set bj_lastCreatedHashtable = InitHashtable( ) call TimerStart( CreateTimer( ), bj_CREEP_SAVE_INTERVAL, false, function SaveCreepRespPos ) endfunction endlibrary )) )) Какой из вариантов лучший по вашему мнению (//ответ обосновывайте, даже если вам тупо нравится Хештебйлы с HashString//) Вот карты, надеюсь независимые эксперты скажут каковая разница в производительности структур и хеша в данном случаи... Отредактировано quq_CCCP, 21.05.2012 в 11:22. |
21.05.2012, 06:58 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
Могу я рассчитывать на независимый тест? а так же мнение какой вариант использовать.... |
23.05.2012, 10:32 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
Производительность структур абсолютно равна производительности массивов. |
23.05.2012, 12:51 | #9
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
ScorpioT1000, ну это и есть массивы по сути... Я про хештейбыли и 2 версии си массивами... одна верися где используется система ToadCop'a а в другой массив с индексами в виде номеров хендлов с опред константами, там 2 карты с хешем и безхеша... Как на ваш взгляд форумчане, какой из способов предпочтительнее использовать в наработках? |
23.05.2012, 12:54 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
Никто не будет тестировать эту херню, составь настоящий тест.
ScorpioT1000 добавил: Хотя его тоже никто не будет проверять... |
23.05.2012, 12:58 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
Ну ладно, норм тест это разве не карта нагруженная по максимуму... (выложены выше, 1 версия на хещтаблиах, а вторая на структурах)
quq_CCCP добавил: ну ладно тогда закрой, раз всем лень... |
23.05.2012, 12:59 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
ScorpioT1000 добавил: например, запросить 1000 раз одну функцию и замерить по таймеру время выполнения итп |
23.05.2012, 13:23 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,203Активность: |
ScorpioT1000, ну я тестил без таймера визуально, забив всю карту юнитами так что не пройти... На стурктурах залаг был меньше, но хз кто будет юзать систему для такого кол ва юнитов.... |
23.05.2012, 14:06 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
надо делать конкретно под свои задачи и точка, не занимайтесь хернёй ненужной |
24.05.2012, 14:49 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|