Jump to content

Digest October

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

Скорость работы скриптов и еще пара вопросов :)


Guest LeonPRO
 Share

Recommended Posts

Guest LeonPRO

Добрый день.

Никто не замерял скорость выполнения скриптов?

Допустим, сколько времени занимает 1000 вызовов несложной ф-ции на получение данных из к.л. глобальной переменной или сколько времени нужно, чтобы пробежаться по 1000 условиям и проверить на соответствие значению If(filter) then {do_someone;}

Это, конечно просто написать самому и замерить, однако с моим знанием синтаксиса, написание тестового скрипта в данный момент займет много времени, так что если у кого есть опыт в написании вычислительно-ресурсоемкого кода для аллодов - поделитесь ощущениями от скорости, пожалуйста.

UPD.1

И ещё вопрос :)

Как можно обмениваться данными между аддонами? В офф. документации только написано, что можно через события, но как конкретно - не указано.

Link to comment
Share on other sites

Guest LeonPRO

Не, ну я смотрел не только его (но особенно его), но сложно найти что-то, не зная даже как оно точно должно выглядеть.

Я посмотрел конструкции использующие имена эвентов, попробовал так и сяк вставлять в свой код. Пыхтел часа два до 4 утра, но не осилил и пошел спать -_-

Эх, так надеялся на ответ сегодня :( выходные заканчиваются...

Link to comment
Share on other sites

Айси как всегда в своем репертуаре. Человек несильный в синтаксисе, смотри аддон который написан на таком брейнфаке, что легко разобраться можно в нем если опыт у тебя программирования приличный есть и сила темной стороны.

Могу ответить на вопрос в первом сообщении не заданный, но схожей тематики - скрипты выполняются 1 раз в кадр, т.е. делят очередь выполнения с разнообразными другими системами АО, самая тяжелая из которых - графическая, т.е. при большой графической нагрузке получаем меньшее кол-во кадров в секунду - реже могут юзаться скрипты. При большой скриптовой нагрузке получаем более редкую прорисовку кадров - падает ФПС.

Однако сколько времени занимают определенные элементарные действия я не засекал.

В принципе как я понял тебе нужно что-то типа:

Global("Ololo",1)

LogInfo(mission.GetLocalTimeHMS().s,"s, ",mission.GetLocalTimeHMS().ms,", ms")

for i = 1, 1000 do

Ololo = Ololo + 1

end

LogInfo(mission.GetLocalTimeHMS().s,"s, ",mission.GetLocalTimeHMS().ms,", ms")

Link to comment
Share on other sites

Guest LeonPRO

Setras, спасибо, сейчас нагенерирую "нагрузку" и замерю )

А что на счет межаддонового обмена данными с помощью событий?

Я знаю как написать отловить событие по его имени, но как создать новое событие и "сгенерировать" его, а также сделать его "видимым" для другого аддона - пока не разобрался.

Link to comment
Share on other sites

LogInfo(mission.GetLocalTimeHMS().s,"s, ",mission.GetLocalTimeHMS().ms,", ms")

for i = 1, 100000 do

Ololo = Ololo + 1

end

LogInfo(mission.GetLocalTimeHMS().s,"s, ",mission.GetLocalTimeHMS().ms,", ms")

Выдало:

Info: addon TestingButton: 7s, 135, ms

Info: addon TestingButton: 7s, 144, ms

Я х.з. если честно что и как конкретно тебе хочется замерить, скажу лишь что перерисовка пользовательского интерефйса дпс метра "DarkDPS" каждый кадр уже значительно уменьшает кол-во кадров в секунду (поэтому его переделали - интерфейс обновляется каждую секунду, на арене уменьшал до неиграбельного состояния).

А вычисления всяких циферек... Мм... Никто пока не жаловался :)

Link to comment
Share on other sites

userMods.SendEvent( eventName, eventParams )

Использование:

userMods.SendEvent( "MY_EVENT_NAME", params )

Первый параметр - имя.

Второй параметр - переменная, можешь передать таблицу в которой понапихано всякой фигни.

Link to comment
Share on other sites

При этом добавление после

Ololo = Ololo + 1

строки

LogInfo(Ololo)

"Притормозило" игру на 25 секунд и выдало

Info: addon TestingButton: 46s, 616, ms

Info: addon TestingButton: 4s, 708, ms

(Ясное дело - открыть файл, записать в него, закрыть файл, и так 100000 раз).

Link to comment
Share on other sites

Guest LeonPRO

>> Выдало:

>> Info: addon TestingButton: 7s, 135, ms

>> Info: addon TestingButton: 7s, 144, ms

Cупер! Спасибо.

У меня совсем не использует графику, но будет много блоков условий, вплоть до сотни или двух.

P.S. Я вчера случайно рекурсивно вызвал метод - игра зависла намертво и лог-файл мгновенно вырос до нескольких десятков килобайт )

>> Использование:

>> userMods.SendEvent( "MY_EVENT_NAME", params )

Огромное спасибо!!! Работает! А я использовал common.SendEvent("MY_EVENT_NAME", params ) и ничерта не получалось :)

Link to comment
Share on other sites

короче графика грузит процессор - особенно Contaier

а простые вычисления мало жрут процессор.

передача данных через прерывания - тоже затратная - но не особо

Link to comment
Share on other sites

Скорость цикла в игре достаточно хорошая. перебежать около 1000 предметов сохраненных в файле user.cfg и сравнить с ними какие либо строки для игры вообще не заметно. даже если подряд происходит проверка 50 таких проверок. только вот сохранение хромает =( сохранить 40-50 элементов(по одному) в файл размером 300кб занимает около 5-15с. при этом игра висит(((

Link to comment
Share on other sites

а зачем их по 1му сохранять?? ведь сохраняться то будут все равно ВСЕ - так как перезаписывается вся секция config для этого аддона.

Если в чат выводить (используя LogToChat из ScriprLIB) по 10-20 строчек то тоже заметны зависы. Причем чем чем больше строк уже в чате есть, тем больше тормозит - поэтому у меня в библиотеке еще удаление из чата запускается

на АП с размером панели в 24 панельки целей и с полной анимацией меток на этих целях - еле заметно притормаживание 2Д графики.

Allods_110507_202535a.jpg
Link to comment
Share on other sites

сохраняются именно не все. а только те которых нет. Поэтому происходит поиск нет ли такого в базе, поэтому перебирается каждый элемент. Это было сделано специально. Что бы не конвертировать строки.

Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use