Created
October 8, 2019 14:21
-
-
Save xjdrew/bc348b1c2af1bab9984a5b6e520ef35e to your computer and use it in GitHub Desktop.
lua gc test case
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local count = 10000 | |
local items = 10000 | |
local g = {} | |
collectgarbage("stop") | |
function run_gc_test(tag, mt) | |
for i=1,count do | |
local t = {} | |
if mt then | |
setmetatable(t, mt) | |
end | |
for j=1,items do | |
t[j] = {} | |
end | |
g[#g+1] = t | |
end | |
local mem = collectgarbage("count") | |
print(tag, "memory size before gc:", mem) | |
local finished | |
while not finished do | |
local t0 = os.clock() | |
finished = collectgarbage("step", 100000) | |
local t1 = os.clock() | |
print(tag, "table gc step, consumed:",finished, t1-t0) | |
end | |
local mem = collectgarbage("count") | |
print(tag, "memory size after gc:", mem) | |
end | |
for i=1, 50 do | |
print("======== round", i) | |
--run_gc_test("gc metamethod", {__gc=function(o) end}) | |
run_gc_test("simple") | |
--run_gc_test("weak table", {__mode="v"}) | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
======== round 1 | |
simple memory size before gc: 8029580.5449219 | |
++++++ gcstate: 7 -> 0 +++++++ | |
simple table gc step, consumed: false 0.08023 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.038946000000003 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.053604 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.046549000000002 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.045299999999997 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.046872999999998 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.049885 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.052053000000001 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.047357999999999 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.046369000000002 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.051092000000001 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.048818000000001 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.047307 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.045746999999999 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.052253999999998 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.041041 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.058584 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.185741 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.249438 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.21657 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.224915 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.236445 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.214558 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.186554 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.188677 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.208974 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.218669 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.210864 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.208496 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.205281 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.208982 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.212862 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.210816 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.212025 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.21422 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.209858 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.210246 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.220917 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.256822 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.314258 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.286934 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.241109 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.21705 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.234824 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.220309 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.222933 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.223696 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.226823 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.227693 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.223481 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.222663 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.226209 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.2347 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.225192 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.238531 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.259061 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.223961 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.229892 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.235737 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.23717 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.231842 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.229655 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.218181 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.221824 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.225791 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.226298 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.22205 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.222908 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.223668 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.217165 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.224236 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.224186 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.218289 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.213076 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.220979 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.223594 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.217259 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.216023 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.222395 | |
++++++ gcstate: 0 -> 0 +++++++ | |
simple table gc step, consumed: false 0.217481 | |
++++++ gcstate: 0 -> 2 +++++++ | |
simple table gc step, consumed: false 1.307541 | |
++++++ gcstate: 2 -> 2 +++++++ | |
simple table gc step, consumed: false 1.731343 | |
++++++ gcstate: 2 -> 2 +++++++ | |
simple table gc step, consumed: false 1.711169 | |
++++++ gcstate: 2 -> 2 +++++++ | |
simple table gc step, consumed: false 1.760332 | |
++++++ gcstate: 2 -> 2 +++++++ | |
simple table gc step, consumed: false 1.770299 | |
++++++ gcstate: 2 -> 2 +++++++ | |
simple table gc step, consumed: false 1.714799 | |
++++++ gcstate: 2 -> 2 +++++++ | |
simple table gc step, consumed: false 1.744867 | |
++++++ gcstate: 2 -> 7 +++++++ | |
simple table gc step, consumed: true 0.232102 | |
simple memory size after gc: 8029580.4863281 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment