Skip to content

Commit 0476c16

Browse files
committed
Lua: improve with Lua performance practices
eliminate global accesses use a[#t+1] = a rather than table.insert for push_back print breaks tracing on LuaJIT, use io.stdout minor typo fix
1 parent 99e67ef commit 0476c16

File tree

2 files changed

+26
-20
lines changed

2 files changed

+26
-20
lines changed

L.lua

+13-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
NUM_RECORDS = 50 * 1000 * 444
2-
trades = {}
1+
local NUM_RECORDS = 50 * 1000 * 444
32

4-
LuaMemTrade = {}
3+
local setmetatable = setmetatable
4+
5+
local trades = {}
6+
7+
local LuaMemTrade = {}
58
LuaMemTrade.__index = LuaMemTrade
69

710
function LuaMemTrade.create()
@@ -28,21 +31,21 @@ function LuaMemTrade:withI(i)
2831
end
2932

3033
for i = 1, NUM_RECORDS do
31-
table.insert(trades, LuaMemTrade.create())
34+
trades[#trades+1] = LuaMemTrade.create()
3235
end
3336

34-
function initTrades()
37+
local function initTrades()
3538
for i = 1, NUM_RECORDS do
3639
trades[i]:withI(i)
3740
end
3841
end
3942

40-
function perfRun(runNum)
43+
local function perfRun(runNum)
4144
startT = os.clock()
4245
initTrades()
4346

44-
buyCost = 0
45-
sellCost = 0
47+
local buyCost = 0
48+
local sellCost = 0
4649

4750
for i = 1, NUM_RECORDS do
4851
if trades[i].side == 'B'
@@ -52,8 +55,8 @@ function perfRun(runNum)
5255
end
5356
endT = os.clock()
5457
duration = (endT - startT) * 1000
55-
print(runNum .. " - duration " .. duration .. "ms\n")
56-
print("buycost = " .. buyCost .. "sellCost = " .. sellCost .. "\n")
58+
io.stdout:write(runNum .. " - duration " .. duration .. "ms\n")
59+
io.stdout:write("buyCost = " .. buyCost .. " sellCost = " .. sellCost .. "\n")
5760
end
5861

5962
for i = 1, 5 do

LJ.lua

+13-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
NUM_RECORDS = 50 * 1000 * 444
2-
trades = {}
1+
local NUM_RECORDS = 50 * 1000 * 444
32

4-
LuaMemTrade = {}
3+
local setmetatable = setmetatable
4+
5+
local trades = {}
6+
7+
local LuaMemTrade = {}
58
LuaMemTrade.__index = LuaMemTrade
69

710
function LuaMemTrade.create()
@@ -28,21 +31,21 @@ function LuaMemTrade:withI(i)
2831
end
2932

3033
for i = 1, NUM_RECORDS do
31-
table.insert(trades, LuaMemTrade.create())
34+
trades[#trades+1] = LuaMemTrade.create()
3235
end
3336

34-
function initTrades()
37+
local function initTrades()
3538
for i = 1, NUM_RECORDS do
3639
trades[i]:withI(i)
3740
end
3841
end
3942

40-
function perfRun(runNum)
43+
local function perfRun(runNum)
4144
startT = os.clock()
4245
initTrades()
4346

44-
buyCost = 0
45-
sellCost = 0
47+
local buyCost = 0
48+
local sellCost = 0
4649

4750
for i = 1, NUM_RECORDS do
4851
if trades[i].side == 'B'
@@ -52,8 +55,8 @@ function perfRun(runNum)
5255
end
5356
endT = os.clock()
5457
duration = (endT - startT) * 1000
55-
print(runNum .. " - duration " .. duration .. "ms\n")
56-
print("buycost = " .. buyCost .. "sellCost = " .. sellCost .. "\n")
58+
io.stdout:write(runNum .. " - duration " .. duration .. "ms\n")
59+
io.stdout:write("buyCost = " .. buyCost .. " sellCost = " .. sellCost .. "\n")
5760
end
5861

5962
for i = 1, 5 do

0 commit comments

Comments
 (0)