簡單測試了一下,如果用JSON,也就是python2.6以上自帶的json處理庫,效率還算可以:
1K的數據,2.9GHz的CPU,單核下每秒能dump:36898次。大約是pyamf的5倍。但數據量較大,約為pyamf的1.67倍(1101/656)。
start_time: 1370747463.77
loop_num: 36898
end_time: 1370747464.78
再看看simplejson,沒有安裝C擴展的情況下:
simplejson,沒有安裝C擴展,跑出的結果讓我驚訝:
start_time: 1370748132.87
loop_num: 1361
end_time: 1370748133.88
效率如此之低下。
下面是測試代碼:
- #! /usr/bin/env python
- #coding=utf-8
- import time
- import json
- test_data = {
- 'baihe': {
- 'name': unicode('百合', 'utf-8'),
- 'say': unicode('清新,淡雅,花香', 'utf-8'),
- 'grow_time': 0.5,
- 'fruit_time': 0.5,
- 'super_time': 0.5,
- 'total_time': 1,
- 'buy':{'gold':2, } ,
- 'harvest_fruit': 1,
- 'harvest_super': 1,
- 'sale': 1,
- 'level_need': 0,
- 'experience' : 2,
- 'exp_fruit': 1,
- 'exp_super': 1,
- 'used': True,
- },
- '1':{
- 'interval' : 0.3,
- 'probability' : {
- '98': {'chips' : (5, 25), },
- '2' : {'gem' : (1,1), },
- },
- },
- '2':{
- 'unlock' : {'chips':1000, 'FC':10,},
- 'interval' : 12,
- 'probability' : {
- '70': {'chips' : (120, 250), },
- '20': {'gem' : (1,1), },
- '10': {'gem' : (2,2), },
- },
- },
- 'one':{
- '10,5' :{'id':'m01', 'Y':1, 'msg':u'在罐子里發現了一個銀幣!',},
- '3,7' :{'id':'m02', 'Y':10,'msg':u'發現了十個銀幣!好大一筆錢!',},
- '15,5' :{'id':'m03', 'Y':2, 'msg':u'一只老鼠跑了過去',},
- '7,4' :{'id':'m04', 'Y':4, 'msg':u'發現了四個生銹的銀幣……',},
- '2,12' :{'id':'m05', 'Y':6, 'msg':u'六個閃亮的銀幣!',},
- },
- }
- start_time = time.time()
- print "start_time:", start_time
- j = 1
- while True:
- j += 1
- a = json.dumps(test_data)
- data_length = len(a)
- end_time = time.time()
- if end_time - start_time >= 1 :
- break
- print "loop_num:", j
- print "end_time: ",end_time
- print data_length ,a
總結:python自帶的json,性能可以接受。simplejson,如果沒有C擴展加速,效率極其低下。