Open
Description
When used .. in loops, the lua will create a lot of garbage and thus affect performance. I changed your script (json-fix.lua)
c:\test>busybox diff -U 0 json.lua json-fix.lua
--- json.lua
+++ json-fix.lua
@@ -41 +41 @@
-local json = { _version = "0.1.2" }
+local json = { _version = "0.1.2fix" }
@@ -235 +235 @@
- local res = ""
+ local res = {}
@@ -246 +246 @@
- res = res .. str:sub(k, j - 1)
+ table.insert(res, str:sub(k, j - 1))
@@ -253 +253 @@
- res = res .. parse_unicode_escape(hex)
+ table.insert(res, parse_unicode_escape(hex))
@@ -259 +259 @@
- res = res .. escape_char_map_inv[c]
+ table.insert(res, escape_char_map_inv[c])
@@ -264,2 +264,2 @@
- res = res .. str:sub(k, j - 1)
- return res, j + 1
+ table.insert(res, str:sub(k, j - 1))
+ return table.concat(res), j + 1
I created a .HAR file (size 313971312 bytes) using firefox and tested it with a simple Lua script.
local function read(file)
local f, err = io.open(file, "r");
if not f then
return;
else
local data = f:read("a");
f:close();
return (data);
end
end
local function test(obj)
print (obj._version)
local last = os.time();
local har = obj.decode(read(file));
print ('decode - ' .. os.time() - last .. " sec")
end
json = require "json";
jsonfix = require "json-fix";
file = 'Archive [21-05-25 11-43-43].har';
test(json)
test(jsonfix)
I got results like this on my computer (Intel(R) Core(TM) i3-9100 CPU @ 3.60GHz)
c:\test>lua read_har.lua
0.1.2
decode - 145 sec
0.1.2fix
decode - 23 sec
c:\test>lua read_har.lua
0.1.2
decode - 144 sec
0.1.2fix
decode - 24 sec
c:\test>lua read_har.lua
0.1.2
decode - 147 sec
0.1.2fix
decode - 22 sec
Metadata
Metadata
Assignees
Labels
No labels