json字符串和普通字符串,性能对比

有个功能,把网络解析出来色数据,发送到指定服务器中。实现方案是解析出来的数据放到一个队列,发送线程定时1s从队列中读出数据,通过json来拼装一个字符串,最后通过sokect把数据发出去。但是当数据量大时,出现了发送线程慢的问题,就是说写队列(有分内存)比读队列快(释放内存),所以导致了内存堆积,最后内存号完了。产生了oom。

解决这个问题,就是对列大小做了限制,超过了一定数量就不入队了,

json拼装字符串的工作,看着很简单,但是深入json源码,发现代码逻辑还是比较复杂的。所以决定测一下性能,感觉json最后生成的字符串比较简单,所以采用了字符串直接拼接来做对比。统计的是发送线程处理10000个数据的时间。

ptmalloc 字符串ptmalloc json
costcost
136503255865849445
94390937501576043
107136028660325834
165560971677858996
149622027498675625
104906645585718050
117702061398178281
142683821499244664
109723691493010446
287851874498472806
131795982474277930
102492069672462557
99929375478949276
161406965581461028
209037419629864594
83959895542105357
109194205670715035
117447262694172184
130906713504037360
212439303505776759
164401141449425986
111838992515644408
102742461545234213
93900642825517226
119487330759949066
140358563429193580
141726192553129380
886061941036867572
90500167811409272
169908390725724140
121346115727657879
124210905613775118
98418483633068804
142694597889261153
107757376463395237
120854040485081219
167375239734893372
91796337609344651
120624887534586870
137384464479512050
111307098485206383
126759901371798365
155444339770634022
1198142571159298938
91779423370871698
140215518880513267
91354004614751217
215857252526709734
118725771474568940
125455508410049891
185731605725962458
184645827531261987
133171066629015489
80294891431675344
120746084424027970
126492251430218838
106859707851205006
116950673559102129
121955000580289220
133310169594716461
246773623605580993
87364257563490049
110932381803470540
113660861599588314
88527854863366080
1915997411050613406
112640217610210231
99208009565249675
126518664656321679
116236646714844498
134600705896680175
103816699680343414
134400018787742450
101445414615364775
124091284483825873
1450792331110204997
1963571911093047912
181905126811547721
231944165571346940
174812865677974905
126987673384406748
163494287460927214
117883773746618239
155663397918249599
122994332653145290
131296817542704185
94961426570209960
121801449541528103
95824027870805307
95293511671642683
134260208561124990
171989445509016324
116858128374951892
193769955633969402
115741846474738290
140722548452654101
109473052634708514
189760346415197742
133686120972496061
133251218.7628557475.7

时间单位是ns,

采用json串处理10000个数据的平均时间是 628557475.7ns

采用字符串拼装处理10000个数据的平均时间是 133251218.7ns

字符串拼装比json快了近5倍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值