简单测试了一下,如果用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

效率如此之低下。

下面是测试代码:

  1. #! /usr/bin/env python
  2. #coding=utf-8
  3. import time
  4. import json
  5. test_data = {
  6. 'baihe': {
  7. 'name': unicode('百合', 'utf-8'),
  8. 'say': unicode('清新,淡雅,花香', 'utf-8'),
  9. 'grow_time': 0.5,
  10. 'fruit_time':  0.5,
  11. 'super_time': 0.5,
  12. 'total_time': 1,
  13. 'buy':{'gold':2, } ,
  14. 'harvest_fruit': 1,
  15. 'harvest_super': 1,
  16. 'sale': 1,
  17. 'level_need': 0,
  18. 'experience' : 2,
  19. 'exp_fruit': 1,
  20. 'exp_super': 1,
  21. 'used': True,
  22. },
  23. '1':{
  24. 'interval' : 0.3,
  25. 'probability' : {
  26. '98': {'chips' : (5, 25), },
  27. '2' : {'gem' : (1,1), },
  28. },
  29. },
  30. '2':{
  31. 'unlock' : {'chips':1000, 'FC':10,},
  32. 'interval' : 12,
  33. 'probability' : {
  34. '70': {'chips' : (120, 250), },
  35. '20': {'gem' : (1,1), },
  36. '10': {'gem' : (2,2), },
  37. },
  38. },
  39. 'one':{
  40. '10,5' :{'id':'m01', 'Y':1, 'msg':u'在罐子里发现了一个银币!',},
  41. '3,7'  :{'id':'m02', 'Y':10,'msg':u'发现了十个银币!好大一笔钱!',},
  42. '15,5' :{'id':'m03', 'Y':2, 'msg':u'一只老鼠跑了过去',},
  43. '7,4'  :{'id':'m04', 'Y':4, 'msg':u'发现了四个生锈的银币……',},
  44. '2,12' :{'id':'m05', 'Y':6, 'msg':u'六个闪亮的银币!',},
  45. },
  46. }
  47. start_time = time.time()
  48. print "start_time:", start_time
  49. j = 1
  50. while True:
  51. j += 1
  52. a = json.dumps(test_data)
  53. data_length = len(a)
  54. end_time = time.time()
  55. if end_time - start_time >= 1 :
  56. break
  57. print "loop_num:", j
  58. print "end_time:  ",end_time
  59. print data_length ,a

总结:python自带的json,性能可以接受。simplejson,如果没有C扩展加速,效率极其低下。

python JSON性能测试与simplejson对比的更多相关文章

  1. Python - json和simplejson比较(转)

    From:https://stackoverflow.com/questions/712791/what-are-the-differences-between-json-and-simplejson ...

  2. Python json和simplejson的使用

    在Python中,json数据和字符串的转换可以使用json模块或simplejson模块. json从Python2.6开始内置到了Python标准库中,我们不需要安装即可直接使用. simplej ...

  3. Python Locust性能测试框架实践

    [本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...

  4. 老李分享:Python开发性能测试脚本

    老李分享:Python开发性能测试脚本   测试开发工程师的工作主要是根据测试目标来完成,帮助测试人员完成测试目标,测试的业务需求是测试人员提出,但是由于环境的制约,手中没有性能测试工具的时候,性能测 ...

  5. 关于Python json解析过程遇到的TypeError: expected string or buffer

    关于Python json解析过程遇到的问题:(爬取天气json数据所遇到的问题http://tianqi.2345.com/) part.1 url——http://tianqi.2345.com/ ...

  6. Python json格式处理

    Python json格式处理 首先放一段代码 import requests import jsonpath import json f=open('ip.txt','r',encoding='ut ...

  7. python json基础学习01

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' import json #全称(javascript object  ...

  8. python json数据的转换

    1  Python数据转json字符串 import json json_str = json.dumps(py_data) 参数解析: json_str = json.dumps(py_data,s ...

  9. python大法好——python json

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式, ...

随机推荐

  1. 读经典——《CLR via C#》(Jeffrey Richter著) 笔记_发布者策略控制

    在 读经典——<CLR via C#>(Jeffrey Richter著) 笔记_高级管理控制(配置)中,是由程序集的发布者将程序集的一个新版本发送给管理员,后者安装程序集,并手动编辑应用 ...

  2. hdu6441 Find Integer 求勾股数 费马大定理

    题目传送门 题目大意: 给出a和n,求满足的b和c. 思路: 数论题目,没什么好说的. 根据费马大定理,当n>2时不存在正整数解. 当n=0或者1时特判一下就可以了,也就是此时变成了一个求勾股数 ...

  3. 第五章:引用类型(一)-Object和Array

    引用类型 引用类型的值(对象)是引用类型的一个实例 引用类型是一种数据结构,用于将数据与功能组织在一起 也常被称为类, Object 对象的两种创建方式 使用new操作符 对象字面量表示法 Array ...

  4. Zero Sum Subarray

    Given an integer array, find a subarray where the sum of numbers is zero. Your code should return th ...

  5. 工作ui(2)

    做完整个小Demo整理的一些方法和踩过的miniUI的坑,分享出来希望大家批评指正,共同进步. 1.动态创建列:尽量不要直接在html文件里创建列,动态设置在js文件里方面添加.修改等. 首先把列定义 ...

  6. Ubuntu16.04搭建深度学习框架——TensorFlow

    TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库,说白了,就是一个库. 小编自己在Ubuntu搭建了深度学习框架TensorFlow,感觉挺简单,现 ...

  7. [一点一滴.NET]前台线程和后台线程

    前台线程和后台线程就是通过线程实例的属性IsBackground=true or false来区分的. 新建一个线程是默认是后台线程. 前台线程全部执行完之后,才退出进程. 进程退出,所有的后台线程全 ...

  8. springmvc+mybatis+sql server实现简单登录功能

    一.源码: 1.Users.java package com.login.entity; import java.io.Serializable; public class Users impleme ...

  9. ssh设置别名

    通常我们在 Termianl 下用 ssh 链接远程主机的时候,每次都需要输入一长串的用户名加主机地址,是不是觉得很麻烦? 我们知道在 /etc/ssh/ 目录下通常都会有 ssh_config 和 ...

  10. 学习JVM-GC原理

    1. 前言 Java和C++之间显著的一个区别就是对内存的管理.和C++把内存管理的权利赋予给开发人员的方式不同,Java拥有一套自动的内存回收系统(Garbage Collection,GC)简称G ...