runtime optimization - table.copy is bad

master
Alexander Weber 2018-04-26 20:04:40 +02:00
parent 1394026751
commit 9f17e17bc1
3 changed files with 19 additions and 8 deletions

View File

@ -77,8 +77,8 @@ function bdev:get_removable_disk(removable_type)
if not self.stack then
return false
end
local drop_pos = table.copy(self.bdev.os.pos)
drop_pos = { x=drop_pos.x+math.random()*2-1, y=drop_pos.y,z=drop_pos.z+math.random()*2-1 }
local p = self.bdev.os.pos
local drop_pos = { x=p.x+math.random()*2-1, y=p.y,z=p.z+math.random()*2-1 }
minetest.item_drop(self.stack, nil, drop_pos)
self.stack = nil
return true
@ -192,7 +192,10 @@ end
-- Get handler
function laptop.get_bdev_handler(mtos)
local bdevobj = table.copy(bdev)
local bdevobj = {}
for k,v in pairs(bdev) do
bdevobj[k] = v
end
bdevobj.os = mtos
return bdevobj
end

View File

@ -208,10 +208,12 @@ function os_class:set_theme(theme)
end
function os_class:get_os_attr()
local os_attr = table.copy(laptop.os_version_attr.default)
if self.hwdef.os_version then
os_attr = table.copy(laptop.os_version_attr[self.hwdef.os_version])
local os_attr = {}
local os_version = self.hwdef.os_version or 'default'
for k, v in pairs(laptop.os_version_attr[os_version]) do
os_attr[k] = v
end
os_attr.tty_style = self.hwdef.tty_style or os_attr.tty_style
if self.hwdef.tty_monochrome ~= nil then
os_attr.tty_monochrome = self.hwdef.tty_monochrome
@ -278,7 +280,10 @@ function os_class:get_app(name)
if not template then
return
end
local app = setmetatable(table.copy(template), laptop.class_lib.app)
local app = setmetatable({}, laptop.class_lib.app)
for k,v in pairs(template) do
app[k] = v
end
app.name = name
app.os = self
return app

View File

@ -111,8 +111,11 @@ end
function laptop.get_theme(theme_name)
local self = setmetatable(table.copy(laptop.themes.default), theme_class)
theme_name = theme_name or "Freedom"
local self = setmetatable({}, theme_class)
for k, v in pairs(laptop.themes.default) do
self[k] = v
end
if theme_name and laptop.themes[theme_name] then
for k,v in pairs(laptop.themes[theme_name]) do
self[k] = v