LINUX.ORG.RU

История изменений

Исправление LightDiver, (текущая версия) :

Сборка мусора ОЧЕНЬ тяжелая. Она вызывает подлагивание интерфейса и ее лучше вообще не трогать. Лучше изначально не плодить лишнего. Но тут надо еще и не допустить нагрузку на проц.

Понимаешь, у меня хранение «объектов» в строке:

["Шеф"] = {
		"00t00t00t00t00t0ka0ka0ka00t00t00t0ka00t0ka0ka00t0ka0ka00t00t00t00t00t0ka0ka0ka0ka00t0ka0ka00t0ka0ka0ka0ka0ka00t0ka0ob0ka0ka0ka00t00t00t0ka0ka0ka0ka0ka00t00t0ka0ka0ka00t0ka0ka0ka0ka00t0ka00t0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka0ka0ka00t00t0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka00t00t", -- [1]
		"4i{4jV4jH4ju Blnilnilnil4lh4nR4lsnil4nUnilnil4o8nilnil4mQ4l34kV4nZ4n=nilnilnilnil4mpnilnil4nxnilnilnilnilnil4q1nilnilnilnilnil4m/4p#4lAnilnilnilnilnil4pY4rAnilnilnil4mqnilnilnilnil4iknil4lLnilnil4ofnilnilnilnilnilnilnilnilnilnil4n94q$nilnilnilnilnil4mWnilnilnilnilnilnilnilnil4manilnilnilnilnil4p74nl", -- [2]
	},

Первая строка в массиве - объекты, вторая - их «здоровье». Но работа с этими строками очень быстрая.

/run for i=1,10000 do mFldS:addStaticStr("Шеф", 1, 5, "00t") end

Например 10 тысяч проходов вообще не заметны, там на уровне погрешности. Меньше 0.01с. Чтение тоже очень быстрое. Вдвое быстрее.

А вот когда я использую это в функции выше, происходит значительный подлаг на секунду наверное. И засирание 15мб памяти где то. Вот понять бы где.

Мне нужно: получить строку. Тут я могу получить сразу ВСЮ строку, что я и делаю. То есть, мне не нужно дергать работу со строкой каждый раз. Нужно распарсить эту строку - пробить все сто объектов в ней. Если объекты нужные мне, обработать их хп и записать. Там тоже нет вроде нагрузки.

В теории нагрузки нет нигде. А на практике есть…

local objFull = mFldS:getStaticStr(sender, 1) or ""
local hpFull = mFldS:getStaticStr(sender, 2) or ""

Вот я получил обе строки. Вот как я могу «дешево» их обработать?

Я пробовал работу через таблицы. По сути было то же самое. Даже чуток хуже, кажись. Тут вопрос же не только в скорости, но и в памяти. Хотя, если невозможно локальную память оптимизировать, то хотелоь бы хотя бы скорость. Хрен с ней с памятью - очистится ведь через пару минут.

Исправление LightDiver, :

Сборка мусора ОЧЕНЬ тяжелая. Она вызывает подлагивание интерфейса и ее лучше вообще не трогать. Лучше изначально не плодить лишнего. Но тут надо еще и не допустить нагрузку на проц.

Понимаешь, у меня хранение «объектов» в строке:

["Шеф"] = {
		"00t00t00t00t00t0ka0ka0ka00t00t00t0ka00t0ka0ka00t0ka0ka00t00t00t00t00t0ka0ka0ka0ka00t0ka0ka00t0ka0ka0ka0ka0ka00t0ka0ob0ka0ka0ka00t00t00t0ka0ka0ka0ka0ka00t00t0ka0ka0ka00t0ka0ka0ka0ka00t0ka00t0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka0ka0ka00t00t0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka00t00t", -- [1]
		"4i{4jV4jH4ju Blnilnilnil4lh4nR4lsnil4nUnilnil4o8nilnil4mQ4l34kV4nZ4n=nilnilnilnil4mpnilnil4nxnilnilnilnilnil4q1nilnilnilnilnil4m/4p#4lAnilnilnilnilnil4pY4rAnilnilnil4mqnilnilnilnil4iknil4lLnilnil4ofnilnilnilnilnilnilnilnilnilnil4n94q$nilnilnilnilnil4mWnilnilnilnilnilnilnilnil4manilnilnilnilnil4p74nl", -- [2]
	},

Первая строка в массиве - объекты, вторая - их «здоровье». Но работа с этими строками очень быстрая.

/run for i=1,10000 do mFldS:addStaticStr("Шеф", 1, 5, "00t") end

Например 10 тысяч проходов вообще не заметны, там на уровне погрешности. Меньше 0.01с. Чтение тоже очень быстрое. Вдвое быстрее.

А вот когда я использую это в функции выше, происходит значительный подлаг на секунду наверное. И засирание 15мб памяти где то. Вот понять бы где.

Мне нужно: получить строку. Тут я могу получить сразу ВСЮ строку, что я и делаю. То есть, мне не нужно дергать работу со строкой каждый раз. Нужно распарсить эту строку - пробить все сто объектов в ней. Если объекты нужные мне, обработать их хп и записать. Там тоже нет вроде нагрузки.

В теории нагрузки нет нигде. А на практике есть…

local objFull = mFldS:getStaticStr(sender, 1) or ""
local hpFull = mFldS:getStaticStr(sender, 2) or ""

Вот я получил обе строки. Вот как я могу «дешево» их обработать?

Исправление LightDiver, :

Сборка мусора ОЧЕНЬ тяжелая. Она вызывает подлагивание интерфейса и ее лучше вообще не трогать. Лучше изначально не плодить лишнего. Но тут надо еще и не допустить нагрузку на проц.

Понимаешь, у меня хранение «объектов» в строке:

["Шеф"] = {
		"00t00t00t00t00t0ka0ka0ka00t00t00t0ka00t0ka0ka00t0ka0ka00t00t00t00t00t0ka0ka0ka0ka00t0ka0ka00t0ka0ka0ka0ka0ka00t0ka0ob0ka0ka0ka00t00t00t0ka0ka0ka0ka0ka00t00t0ka0ka0ka00t0ka0ka0ka0ka00t0ka00t0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka0ka0ka00t00t0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka00t00t", -- [1]
		"4i{4jV4jH4ju Blnilnilnil4lh4nR4lsnil4nUnilnil4o8nilnil4mQ4l34kV4nZ4n=nilnilnilnil4mpnilnil4nxnilnilnilnilnil4q1nilnilnilnilnil4m/4p#4lAnilnilnilnilnil4pY4rAnilnilnil4mqnilnilnilnil4iknil4lLnilnil4ofnilnilnilnilnilnilnilnilnilnil4n94q$nilnilnilnilnil4mWnilnilnilnilnilnilnilnil4manilnilnilnilnil4p74nl", -- [2]
	},

Первая строка в массиве - объекты, вторая - их «здоровье». Но работа с этими строками очень быстрая.

/run for i=1,10000 do mFldS:addStaticStr("Шеф", 1, 5, "00t") end

Например 10 тысяч проходов вообще не заметны, там на уровне погрешности. Меньше 0.01с. Чтение тоже очень быстрое. Вдвое быстрее.

А вот когда я использую это в функции выше, происходит значительный подлаг на секунду наверное. И засирание 15мб памяти где то. Вот понять бы где.

Мне нужно: получить строку. Тут я могу получить сразу ВСЮ строку, что я и делаю. То есть, мне не нужно дергать работу со строкой каждый раз. Нужно распарсить эту строку - пробить все сто объектов в ней. Если объекты нужные мне, обработать их хп и записать. Там тоже нет вроде нагрузки.

В теории нагрузки нет нигде. А на практике есть…

Исправление LightDiver, :

Сборка мусора ОЧЕНЬ тяжелая. Она вызывает подлагивание интерфейса и ее лучше вообще не трогать. Лучше изначально не плодить лишнего. Но тут надо еще и не допустить нагрузку на проц.

Понимаешь, у меня хранение «объектов» в строке:

["Шеф"] = {
		"00t00t00t00t00t0ka0ka0ka00t00t00t0ka00t0ka0ka00t0ka0ka00t00t00t00t00t0ka0ka0ka0ka00t0ka0ka00t0ka0ka0ka0ka0ka00t0ka0ob0ka0ka0ka00t00t00t0ka0ka0ka0ka0ka00t00t0ka0ka0ka00t0ka0ka0ka0ka00t0ka00t0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka0ka0ka00t00t0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka00t00t", -- [1]
		"4i{4jV4jH4ju Blnilnilnil4lh4nR4lsnil4nUnilnil4o8nilnil4mQ4l34kV4nZ4n=nilnilnilnil4mpnilnil4nxnilnilnilnilnil4q1nilnilnilnilnil4m/4p#4lAnilnilnilnilnil4pY4rAnilnilnil4mqnilnilnilnil4iknil4lLnilnil4ofnilnilnilnilnilnilnilnilnilnil4n94q$nilnilnilnilnil4mWnilnilnilnilnilnilnilnil4manilnilnilnilnil4p74nl", -- [2]
	},

Первая строка в массиве - объекты, вторая - их «здоровье». Но работа с этими строками очень быстрая.

/run for i=1,10000 do mFldS:addStaticStr("Шеф", 1, 5, "00t") end

Например 10 тысяч проходов вообще не заметны, там на уровне погрешности. Меньше 0.01с. Чтение тоже очень быстрое. Вдвое быстрее.

А вот когда я использую это в функции выше, происходит значительный подлаг на секунду наверное. И засирание 15мб памяти где то. Вот понять бы где.

Мне нужно: получить строку. Тут я могу получить сразу ВСЮ строку, что я и делаю. То есть, мне не нужно дергать работу со строкой каждый раз. Нужно распарсить эту строку - пробить все сто объектов в ней. Если объекты нужные мне, обработать их хп и записать. Там тоже нет вроде нагрузки.

В теории нагрузки нет нигде. А на практике есть…

Исходная версия LightDiver, :

Сборка мусора ОЧЕНЬ тяжелая. Она вызывает подлагивание интерфейса и ее лучше вообще не трогать. Лучше изначально не плодить лишнего. Но тут надо еще и не допустить нагрузку на проц.

Понимаешь, у меня хранение «объектов» в строке:

["Шеф"] = {
		"00t00t00t00t00t0ka0ka0ka00t00t00t0ka00t0ka0ka00t0ka0ka00t00t00t00t00t0ka0ka0ka0ka00t0ka0ka00t0ka0ka0ka0ka0ka00t0ka0ob0ka0ka0ka00t00t00t0ka0ka0ka0ka0ka00t00t0ka0ka0ka00t0ka0ka0ka0ka00t0ka00t0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka0ka0ka00t00t0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka0ka0ka0ka00t0ka0ka0ka0ka0ka00t00t", -- [1]
		"4i{4jV4jH4ju Blnilnilnil4lh4nR4lsnil4nUnilnil4o8nilnil4mQ4l34kV4nZ4n=nilnilnilnil4mpnilnil4nxnilnilnilnilnil4q1nilnilnilnilnil4m/4p#4lAnilnilnilnilnil4pY4rAnilnilnil4mqnilnilnilnil4iknil4lLnilnil4ofnilnilnilnilnilnilnilnilnilnil4n94q$nilnilnilnilnil4mWnilnilnilnilnilnilnilnil4manilnilnilnilnil4p74nl", -- [2]
	},

Первая строка в массиве - объекты, вторая - их «здоровье». Но работа с этими строками очень быстрая.

/run for i=1,10000 do mFldS:addStaticStr(«Шеф», 1, 5, «00t») end

Например 10 тысяч проходов вообще не заметны, там на уровне погрешности. Меньше 0.01с. Чтение тоже очень быстрое. Вдвое быстрее.

А вот когда я использую это в функции выше, происходит значительный подлаг на секунду наверное. И засирание 15мб памяти где то. Вот понять бы где.

Мне нужно: получить строку. Тут я могу получить сразу ВСЮ строку, что я и делаю. То есть, мне не нужно дергать работу со строкой каждый раз. Нужно распарсить эту строку - пробить все сто объектов в ней. Если объекты нужные мне, обработать их хп и записать. Там тоже нет вроде нагрузки.

В теории нагрузки нет нигде. А на практике есть…