aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2019-07-08 02:46:27 +0200
committerKim Alvefur <zash@zash.se>2019-07-08 02:46:27 +0200
commite081fd664251a2eb7ab68262c2b8a3cad4b381c7 (patch)
treeed7768f531d3923c9d6169e0d1fceafe67638fb1
parent70e3e96c0225d0e43224a14f902b951b6b480996 (diff)
downloadprosody-e081fd664251a2eb7ab68262c2b8a3cad4b381c7.tar.gz
prosody-e081fd664251a2eb7ab68262c2b8a3cad4b381c7.zip
util.serialization: Cache default serialization instance (fixes #1389)
Most serialization uses still use the default serialize() and thus duplicate much of the setup, which negates some of the performance improvements of the rewrite.
-rw-r--r--util/serialization.lua7
1 files changed, 6 insertions, 1 deletions
diff --git a/util/serialization.lua b/util/serialization.lua
index dd6a2a2b..5121a9f9 100644
--- a/util/serialization.lua
+++ b/util/serialization.lua
@@ -272,10 +272,15 @@ local function deserialize(str)
return ret;
end
+local default = new();
return {
new = new;
serialize = function (x, opt)
- return new(opt)(x);
+ if opt == nil then
+ return default(x);
+ else
+ return new(opt)(x);
+ end
end;
deserialize = deserialize;
};