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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Модератор форума: PUVer, SirNikolas, Ty3uK  
[СТАТЬЯ] Уменьшение лагов в карте
Ty3uKДата: Воскресенье, 26 Февраля 2012, 14:24:27 | Сообщение # 51
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Ну, ты в тестах приводишь результаты неуничтоженной пустой группы. Вот и сказал. А уничтожение группы уничтожает только ту, которой ты дал значение "выбрать всех юнитов...", но локалка осталась внутри, и она утекла. Я когда код пишу, офк же удаляю группы, а как иначе :) но я ж руками пикаю, а не через бж :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Воскресенье, 26 Февраля 2012, 14:39:42 | Сообщение # 52
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ну и что тут!? Функция которая создает локально и возвращает форс - утечки нет, только нужно обнулять локальный форс в функции GetForce() так как ты возвращаешь лишь значение переменной f, а не саму переменную. И кто так будет делать или это для теста? Таймер вообще можно создавать уже в функции через CreateTimer(), т к он бесконечный, да и конечный таймер также только дестроить его после истечения.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Воскресенье, 26 Февраля 2012, 14:45:09
 

Ty3uKДата: Воскресенье, 26 Февраля 2012, 14:47:19 | Сообщение # 53
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Лавс, если ты сначала обнулишь переменную, а потом вернешь значение, то ты вернешь 0, а если сначала вернешь, а потом захочешь обнулить, то обнуления не будет, ибо return провоцирует выход из функции

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

lawsonДата: Воскресенье, 26 Февраля 2012, 14:53:40 | Сообщение # 54
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Ty3uK, Ойойойой что-то не подумал, сори. Ну тогда останется утечка, да? - Ведь значение у переменной f так и останеться.

Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

Ty3uKДата: Воскресенье, 26 Февраля 2012, 14:57:39 | Сообщение # 55
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Да, но дело не в значении. Сам же знаешь- переменной выделяется память. Вот она и не освобождается, потому как обнуления нет. Есть несколько способов- писать в структуру, глобалку или хэш, обнулять переменную и возвращать значение через сохраненное значение(например, return LoadForceHandle() )

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек


Сообщение отредактировал Ty3uK - Воскресенье, 26 Февраля 2012, 15:00:09
 

lawsonДата: Воскресенье, 26 Февраля 2012, 15:10:39 | Сообщение # 56
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Ty3uK)
Есть несколько способов- писать в структуру, глобалку или хэш, обнулять переменную и возвращать значение через сохраненное значение(например, return LoadForceHandle() )

Quote (lawson)
И кто так будет делать

А цель данного теста? Где-то это применить?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

Ty3uKДата: Воскресенье, 26 Февраля 2012, 15:15:16 | Сообщение # 57
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Цель теста видимо доказать нам, что бж, которые возвращают локальные переменные, не утечны

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Воскресенье, 26 Февраля 2012, 15:19:04 | Сообщение # 58
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
function GetForce takes nothing returns force
     set udg_F = CreateForce()
     return udg_F
endfunction

function Trig_test_Actions takes nothing returns nothing
     local force f = GetForce()
     //set udg_F = null
     call DestroyForce(f)
     set f = null
endfunction

function InitTrig_test takes nothing returns nothing
     call TimerStart(CreateTimer(), .01, true, function Trig_test_Actions)
endfunction
Не могу надивиться. При исполнении этого кода процесс медленно толстеет со скоростью 400 Кб/мин. А если снять комментарий, вес процесса остается постоянным.
Пробовал даже вот так:
Code
function GetForce takes nothing returns nothing
     set udg_F = null
     set udg_F = CreateForce()
     return udg_F
endfunction
Не помогает. Все равно процесс увеличивается в размерах.

Скажи, разве это не криворукость? :)


 

BublGumДата: Воскресенье, 26 Февраля 2012, 15:33:18 | Сообщение # 59
5 уровень
Группа: Проверенные
Сообщений: 121
Награды: 0
Репутация: 25
Блокировки:
блин как же здесь все сложно в этом jass :D я думал что он легче php а на самом деле нет!
 

lawsonДата: Воскресенье, 26 Февраля 2012, 15:35:42 | Сообщение # 60
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (BublGum)
как же здесь все сложно в этом jass

Quote (BublGum)
я думал что он легче php

Сразу мысль в голове что ты не знаешь ни пхп ни жасс.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!


Сообщение отредактировал lawson - Воскресенье, 26 Февраля 2012, 15:36:02
 

BublGumДата: Воскресенье, 26 Февраля 2012, 15:45:50 | Сообщение # 61
5 уровень
Группа: Проверенные
Сообщений: 121
Награды: 0
Репутация: 25
Блокировки:
Quote (lawson)
Сразу мысль в голове что ты не знаешь ни пхп ни жасс.
так и есть! ну синтаксис пхп я знаю
 

ImpregnableДата: Воскресенье, 26 Февраля 2012, 16:49:35 | Сообщение # 62
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
SirNikolas ну вот видишь, сам понял, почему во всех BJ не обнуляются локалки.
А вот что касается криворукости объясню(и закончить наконец этот спор):
Редактор был создан в первую очередь для самих Близов, и делать из jass'а полноценную среду программирования просто ни к чему.
Теперь на счет всех утечек и прочей ерунды. War ведь стратегия и значит карты рассчитаны только на Развитие(где используются только функции сражения) и Кампании(чтобы там возникли лаги, наверное надо оставить включенным компьютер на 3-5 месяцев).
А и при запуске редактора можно увидеть "Blizzard Entertainment НЕ осуществляет поддержку Редактора..."

Вывод: Радуйтесь, что вам вообще дали возможность создавать свои карты.
 

lawsonДата: Воскресенье, 26 Февраля 2012, 17:23:18 | Сообщение # 63
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Impregnable)
Радуйтесь, что вам вообще дали возможность создавать свои карты.

Если бы Близы не совали редактор к каждому вару, то о нем бы забыли где-то через год - полтора. Редактор очень сильный стимулятор, способный долго продлевать жизнь игре, это один из ходов близзов по распостронению вара, ведь с помощью редактора можно и редактировать и создавать новые карты, такие как дота, которая спровоцировала создание из как ЛоЛ и ХоН. И вот почему теперь Близзы к редактору второго старкрафта, в мануэле приписали: что каждая карта созданная с помощью ихнего редактора является собственностью Близзов. Вот так, как выгодно пропихивать редакторы, а не то что ты сказал выще.


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

ImpregnableДата: Воскресенье, 26 Февраля 2012, 17:46:08 | Сообщение # 64
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Несомненно редактор продлевает жизнь игре, но не надо сравнивать разные игры, тем более выпущенные с разницой более пяти лет.
 

SirNikolasДата: Понедельник, 27 Февраля 2012, 09:39:05 | Сообщение # 65
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Решение проблемы со всеми этими группами и кланами найдено.
Code
function GetForceOfPlayer2 takes force f, player p returns force
     call ForceAddPlayer(f, p)
     return f
ednfunction

function GetForceOfPlayer1 takes player p returns force
     return GetForceOfPlayer2(CreateForce(), p)
endfunction

function Trig_test_Actions takes nothing returns nothing
     local force f = GetForceOfPlayer1(Player(0))
     call DestroyForce(f)
     set f = null
endfunction

function InitTrig_test takes nothing returns nothing
     call TimerStart(CreateTimer(), .01, true, function Trig_test_Actions)
endfunction


 

ImpregnableДата: Понедельник, 27 Февраля 2012, 14:39:54 | Сообщение # 66
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Фуф нашел в чем проблема. Оказывается, когда удаляется игровой объект, то в текущем потоке необходимо удалить все ссылки на него.

Кстати SirNikolas твой код нерабочий и его можно немного улучшить.
Code

define
     <GetForceOfPlayer>(pl) = {GetForceOfPlayer1(pl); set loc_force = null}
enddefine

globals
     force loc_force
endglobals

function GetForceOfPlayer1 takes player p returns force  
     set loc_force = CreateForce()
     call ForceAddPlayer(loc_force, p)
     return loc_force
endfunction  

function Trig_test_Actions takes nothing returns nothing  
     local force f = GetForceOfPlayer(Player(0))
     call DestroyForce(f)
     set f = null  
endfunction  

function InitTrig_test2 takes nothing returns nothing
     call TimerStart(CreateTimer(), .01, true, function Trig_test_Actions)
endfunction

Quote (SirNikolas)
Скажи, разве это не криворукость?

Да, наверное, но только на половину.
 

SirNikolasДата: Понедельник, 27 Февраля 2012, 15:22:04 | Сообщение # 67
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Impregnable)
Code
define  
    <GetForceOfPlayer>(pl) = {GetForceOfPlayer1(pl); set loc_force = null}  
enddefine
Code
call DisplayTextToForce(GetForceOfPlayer(Player(0)), "define'ы не будут работать, когда результат функции является аргументом")


 

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

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