LINUX.ORG.RU

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

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

Просто столкнулся с сильным ростом потребления озу и начал копать.

function addDb(db,key,msg)
	if nsDb == nil then
		nsDb = {}
	end
	if nsDb[db] == nil then
		nsDb[db] = {}
	end	
	if nsDb[db][key] == nil then
		nsDb[db][key] = {}
	end
  	local test
  	local razmerDb = tablelength(nsDb[db][key])
  	if razmerDb > 0 then
	  	for k,v in pairs(nsDb[db][key]) do
	  		if v == msg then
	  			test = 1
	  		end
	  	end
	end
  	if test == nil then
  		local num = tostring(razmerDb+1)
  		nsDb[db][key][msg] = 1
  	end
end

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

function addDb(db,key,msg)
  nsDb = nsDb or {}
  nsDb[db] = nsDb[db] or {}
  nsDb[db][key] = nsDb[db][key] or {}
  nsDb[db][key][msg] = 1
end

По сути - то же самое однйо строкой. Без проверок и прочего.

И тут у меня возник вопрос, а что лучше: nsDb[db][key][msg] = 1 или nsDb[db][key][msg] = true

Вот и начал дальше копать.

А теперь у меня вообще общий класс для работы с данными.

https://pastebin.com/Rq7ins8b

Наверное что то такое будет.

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

Просто столкнулся с сильным ростом потребления озу и начал копать.

function addDb(db,key,msg)
	if nsDb == nil then
		nsDb = {}
	end
	if nsDb[db] == nil then
		nsDb[db] = {}
	end	
	if nsDb[db][key] == nil then
		nsDb[db][key] = {}
	end
  	local test
  	local razmerDb = tablelength(nsDb[db][key])
  	if razmerDb > 0 then
	  	for k,v in pairs(nsDb[db][key]) do
	  		if v == msg then
	  			test = 1
	  		end
	  	end
	end
  	if test == nil then
  		local num = tostring(razmerDb+1)
  		nsDb[db][key][msg] = 1
  	end
end

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

function addDb(db,key,msg)
  nsDb = nsDb or {}
  nsDb[db] = nsDb[db] or {}
  nsDb[db][key] = nsDb[db][key] or {}
  nsDb[db][key][msg] = 1
end

По сути - то же самое однйо строкой. Без проверок и прочего.

И тут у меня возник вопрос, а что лучше: nsDb[db][key][msg] = 1 или nsDb[db][key][msg] = true

Вот и начал дальше копать.