资讯专栏INFORMATION COLUMN

看我打脸Message Pack

3fuyu / 991人阅读

摘要:然后看出来的文件,恩,浪费我的时间然后不死心结果还是次恩,真是鸡肋啊

总之网站上说得很好啦:http://msgpack.org/,又快,生成的文件又小等等,总之就是很牛逼的救世主咯

因为忍受不了 pickle 的速度,所以尝试切换一下。

import pickle
import msgpack
import gc

a = list(range(10000*10000))

def dump1():
    with open("1", "wb") as f:
        pickle.dump(a, f)

def dump2():
    with open("2", "wb") as f:
        msgpack.dump(a, f)

def dump3():
    gc.disable()
    with open("2", "wb") as f:
        msgpack.dump(a, f)
    gc.enable()

然后测速,有 dump3 的原因是官方网站说关闭gc有奇效:

CPython"s GC starts when growing allocated object. This means unpacking may cause useless GC. You can use gc.disable() when unpacking large message.

恩,先看测试结果(测试了10次):

dump1: 1 loop, best of 3: 3.98 s per loop
dump2: 1 loop, best of 10: 5.22 s per loop
dump3: 1 loop, best of 10: 5.13 s per loop

恩,彻底打脸了。关闭gc也没有奇效。

然后看dump出来的文件 (=,=b):

-rw-r--r--  1 chendx  staff   477M  8 11 18:43 1
-rw-r--r--  1 chendx  staff   477M  8 11 18:49 2

恩,浪费我的时间……


然后不死心

def load1():
    with open("1", "rb") as f:
        pickle.load(f)

def load2():
    with open("2", "rb") as f:
        msgpack.load(f)

结果(还是10次)

load1: 1 loop, best of 10: 6.78 s per loop
load2: 1 loop, best of 10: 5.91 s per loop

恩,真是鸡肋啊

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45488.html

相关文章

  • [译][Tkinter 教程11] 对话框和消息框

    摘要:已获原作者授权原系列地址简介提供了一系列的对话框可以用来显示文本消息提示警告信息和错误信息选择文件或颜色其他一些简单的对话框还可以请求用户输入文本整数或数字下面是一个典型的对话框使用场景在应用程序中经常会有退出按钮如下点击按钮会弹出一个确认 已获原作者授权. 原系列地址: Python Tkinter 简介 Tkinter 提供了一系列的对话框, 可以用来显示文本消息, 提示警告信息...

    Anchorer 评论0 收藏0
  • 你不知道WebSocket吗?

    摘要:什么是是一种在单个连接上进行全双工通信的协议。短轮询配段代码,静态服务中间件用来返回静态文件当前价格是元获取最新价格接口客户端不停的发送请求,去服务端获取最新价格。它通过连接到一个服务器,以格式接收事件不关闭连接。 什么是WebSocket? WebSocket是一种在单个TCP连接上进行全双工通信的协议。这里我们发现了一个有趣的词:全双工,那我们就来简单了解下通信方式有哪些! 单工 ...

    techstay 评论0 收藏0
  • 你不知道WebSocket吗?

    摘要:什么是是一种在单个连接上进行全双工通信的协议。短轮询配段代码,静态服务中间件用来返回静态文件当前价格是元获取最新价格接口客户端不停的发送请求,去服务端获取最新价格。它通过连接到一个服务器,以格式接收事件不关闭连接。 什么是WebSocket? WebSocket是一种在单个TCP连接上进行全双工通信的协议。这里我们发现了一个有趣的词:全双工,那我们就来简单了解下通信方式有哪些! 单工 ...

    remcarpediem 评论0 收藏0
  • 在tornado中使用tcpserver和tcpclient实现echo服务器

    摘要:本文主要介绍了在框架中使用实现简单服务器的过程。在网络通信中,需要发送二进制流数据函数负责数据组包,即将数据按照规定的传输协议组合起来函数负责数据拆包,即按照规定的协议将数据拆分开来。不多说,具体实现代码咱们来看一下。 本文主要介绍了在tornado框架中,使用tcpserver,tcpclient,struct.pack(),struct.unpack实现简单echo服务器的过程。 ...

    liukai90 评论0 收藏0

发表评论

0条评论

3fuyu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<