lua中,两种json和table互转方法的效率比较
- 在用lua编写的服务器中,如果客户端发送json格式的数据,那么在lua处理业务逻辑的时候,必然需要转换成lua自己的数据结构,如table。此时,就会用到table和json格式的互转。
- 在用lua编写的服务器中,如果我们通过redis来存储数据,由于redis中不存在table这种数据结构,因此,我们可以选择将table转换成json字符串来进行存储。在数据的存取过程中,也会用到table和json格式的互转。
以上两种场景中,json和table的互转使用频率是非常高的,如果转换效率有提升,对于降低我们业务延时将会有很大的帮助。因此,选择一种高效率的转换方式的重要性可见一斑。
下面我们简单介绍两种转换方式,并对他们的转换效率做一个对比。
local t = {
a = "hello",
b = "world",
c = ,
d = "",
e = {"hhh", "", ""},
f = {
a = "hello",
b = "world",
c = ,
d = "",
e = {"hhh", "", ""},
count =
}
}
local tm1 = os.time()
local str_json = ""
for i = , , do
--str_json = json.encode(t)
--t = json.decode(str_json)
str_json = cjson.encode(t)
t = cjson.decode(str_json)
t.f.count = t.f.count +
end
local tm2 = os.time()
print("tm1:" .. tm1 .. ",tm2:" .. tm2 .. ",dt:" .. (tm2 - tm1))
print(str_json)
tm1:,tm2:,dt:
{"a":"hello","c":,"b":"world","e":["hhh","",""],"d":"","f":{"a":"hello","c":,"b":"world","e":["hhh","",""],"d":"","count":}}
tm1:,tm2:,dt:
{"a":"hello","c":,"b":"world","e":["hhh","",""],"d":"","f":{"a":"hello","c":,"b":"world","e":["hhh","",""],"d":"","count":}}
lua中,两种json和table互转方法的效率比较的更多相关文章
- net.sf.json和com.alibaba.fastjson两种json加工类的相关使用方法
com.alibaba.fastjson Fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Jav ...
- 比较C#中几种常见的复制字节数组方法的效率
在日常编程过程中,我们可能经常需要Copy各种数组,一般来说有以下几种常见的方法:Array.Copy,IList<T>.Copy,BinaryReader.ReadBytes,Buffe ...
- 比较C#中几种常见的复制字节数组方法的效率[转]
[原文链接] 在日常编程过程中,我们可能经常需要Copy各种数组,一般来说有以下几种常见的方法:Array.Copy,IList<T>.Copy,BinaryReader.ReadByte ...
- JavaScript中两种类型的全局对象/函数【转】
Snandy Stop, thinking is the essence of progress. JavaScript中两种类型的全局对象/函数 这里所说的JavaScript指浏览器环境中的包括宿 ...
- jsp中两种include的区别【转】
引用文章:http://www.ibm.com/developerworks/cn/java/j-jsp04293/ http://www.cnblogs.com/lazycoding/archive ...
- OC中两种单例实现方式
OC中两种单例实现方式 写在前面 前两天探索了一下C++ 的单例,领悟深刻了许多.今天来看看OC中的单例又是怎么回事.查看相关资料,发现在OC中一般有两种实现单例的方式,一种方式是跟C++ 中类似的常 ...
- JAVA 中两种判断输入的是否是数字的方法__正则化_
JAVA 中两种判断输入的是否是数字的方法 package t0806; import java.io.*; import java.util.regex.*; public class zhengz ...
- 关于js中两种定时器的设置及清除(转载)
1.JS中的定时器有两种: window.setTimeout([function],[interval]) 设置一个定时器,并且设定了一个等待的时间[interval],当到达时间后,执行对应的方法 ...
- mybatis中两种取值方式?谈谈Spring框架理解?
1.mybatis中两种取值方式? 回答:Mybatis中取值方式有几种?各自区别是什么? Mybatis取值方式就是说在Mapper文件中获取service传过来的值的方法,总共有两种方式,通过 $ ...
随机推荐
- codeforces #592(Div.2)
codeforces #592(Div.2) A Pens and Pencils Tomorrow is a difficult day for Polycarp: he has to attend ...
- 2.原生js实现图片懒加载
网上查了很多图片懒加载的内容, 但基本上都是jQuery实现的, 没有说清楚其原理, 所以研究了一下 多的不说, 上代码, 看不明白的建议看下我的上一篇文章<1. 图解浏览器和用户设备的宽高等属 ...
- c# Hashtable Synchronized vs SyncRoot
Synchronized vs SyncRoot 我们知道,在.net的一些集合类型中,譬如Hashtable和ArrayList,都有Synchronized静态方法和SyncRoot实例方法,他们 ...
- Valgrind调试
Valgrind的最初作者是Julian Seward,他于2006年由于在开发Valgrind上的工作获得了第二届Google-O'Reilly开源代码奖 摘自 Valgrind.org: Valg ...
- debian apt-get 代理
一:在 /etc/apt/目录下建立 apt.conf 文件增加如下 Acquire::http::Proxy "http://proxyxxxxxxx:port"; 注意格式:最 ...
- MAC盗版软件下载网站黑名单
上面有大量的开源软件或者免费软件,拒绝盗版从我做起, 下面被删除的网站提供大量破解软件下载,欢迎大家监督它们. 玩转苹果:http://www.ifunmac.com Mac软件下载站:http:// ...
- Mysql 数据库部署(解压免安装)
下载压缩包,解压. 在根目录下添加my.ini, 复制一下内容,保存. [mysqld] skip-grant-tables #绑定IPv4和3306端口 bind-address = 0.0.0.0 ...
- CPDF_Document
auto pDoc = std::unique_ptr<CPDF_Document>(); pDoc->CreateNewDoc(); auto pDict = CPDF_Dicti ...
- MP的自动填充功能
用来进行自动填充时间. 使用注解@TableTield(fill=FieldFill.insert)插入时进行性填充 使用注解@TableTield(fill=FieldFill.Update)更新时 ...
- Genymotion模拟器上money测试
1.查看APK包名:sdk\build-tools\android-4.4W>aapt dump xmltree 123.apk AndroidManifest.xml 查看包名为:com.aa ...