我蟒蛇目前使用的应用程序 蟒蛇-API缓存 设置并得到目的在缓存.这API使用蟒蛇的母 坐模块 序列化和serialize蟒蛇的对象。

这API让它简单和快速存储嵌套Python列表、字典以及元组在缓存,且阅读这些对象的回应是完全透明--这只是工作。

但是我不想被限制使用蟒蛇完全,和如果所有的缓存的对象是化与坐,则客户以其他语言编写的不会的工作。

这里的交叉平台化的选择,我们认为:

  1. XML的主要好处是,它是可读的,但那不是重要的,在这个应用程序。XML还需要很多的空间,这是昂贵的分析。

  2. 书似乎是一个很好的跨平台的标准,但我不确定它保留了字的对象类型阅读时回来缓存.例如,根据 这个职位 组转换为清单时使用 simplejson;此外,它似乎加入元素id结构可能会破坏代码写的旧结构

  3. 谷歌协议的缓冲区 -我真的很感兴趣,这是因为它似乎非常快速和紧凑--至少10次更小的和更快的比XML;这不是可读的,但是这并不重要这个应用程序;并且它似乎旨在支持不断增长的结构没有打破旧的代码

考虑到优先事项为这个程序,什么是理想的对象化方法用缓存?

  1. 交叉平台支持(Python,Java,C#、C++、红宝石、Perl)

  2. 处理嵌套数据结构

  3. 快化/de化

  4. 最低存的足迹

  5. 灵活改变的结构没有打破旧的代码
有帮助吗?

解决方案 2

我尝试了多种方法和决定压缩JSON作之间的最佳平衡的速度和存储排放。蟒蛇的司机坐的功能是稍微快一点,但是得到的对象,不可以与非蟒蛇的客户。

我看到的3:1的压缩因此,所有数据适合于缓存和应用程序获得分-10响应时间,包括网页渲染。

这里有一个比较象、勤俭节约、协议的缓冲器及其使用和没有压缩:

http://bouncybouncy.net/ramblings/posts/more_on_json_vs_thrift_and_protocol_buffers/

看起来喜欢这个测试了相同的结果,我没有用压缩手机中。因为我不需要预先限定每个结构,这似乎是最快和最小的跨平台的答案。

其他提示

一个主要考虑的是"你想要指定每个结构定义"?

如果你确定的,然后你可以看一下:

  1. 协议的缓冲区-http://code.google.com/apis/protocolbuffers/docs/overview.html
  2. 勤俭节约http://developers.facebook.com/thrift/ (更多的面向服务)

这两个解决方案需要支持文件,以界定每个数据结构。


如果你不愿意承担的开发人员的开销预先限定每个结构,然后看看:

  1. JSON(通过python cjson,并native PHP json).两者都是真的真的很快,如果你不需要发射的二进制的内容(如图像,等等...)。
  2. 又一个标记语言@ http://www.yaml.org/.还真快,如果你得到正确的图书馆。

然而,我认为,这两个有问题的,与运输的二进制的内容,这就是为什么他们被排除于我们的使用情况。 注: 其可能有良好的二进制的支持,你将必须检查客户的库--在这里看到: http://yaml.org/type/binary.html


在我们的公司,我们推出我们自己的图书馆(Extruct)跨语言化二进制的支持。我们目前有(体面的)快速实现Python和PHP,虽然它不是非常人可读由于使用base64在所有串(二进制的支持)。最后,我们将口他们C和使用更多的标准编码。

动态的语言,如PHP和Python得很缓慢,如果你有太多的迭代,在一个循环或要看看每一个字符。C另一方面照在这样的操作。

如果你想看到的执行Extruct,请让我知道。(接触的信息在 http://blog.gahooa.com/ 根据"关于我")

"交叉平台支持(Python,Java,C#、C++、红宝石、Perl)"

太糟糕了这一准则是第一次。背后的意图大多数语言是要表达的基本数据的结构和处理方式不同。那是什么使用多种语言的一个"问题":他们都是不同的。

一个代表性,这是良好的跨多种语文一般是不可能的。有妥协丰富的代表性、性能或模糊性。

JSON符合其余标准。消息是紧凑和分析很快(不同于XML)。筑巢是处理很好。结构变化而不断代码是玄乎总是--如果删除一些东西,老码会破裂。如果你改变的东西,这是必需的,老码会破裂。如果你加入的事情,但是,JSON处理这个。

我喜欢人-可读性。它帮助了很多的调试和麻烦。

微妙的具有Python组转到名单不是一个有趣的问题。收到的应用程序已经知道的结构正在被接收,并且可以调整它(如果它事项。)


编辑上的性能。

分析XML文件。 http://developers.de/blogs/damir_dobric/archive/2008/12/27/performance-comparison-soap-vs-json-wcf-implementation.aspx

xmlParse0.326 jsonParse0.255

JSON似乎是明显快于同样的内容。我用Python SimpleJSON和ElementTree模块在Python2.5.2.

你可能有兴趣为此链接:

http://kbyanc.blogspot.com/2007/07/python-serializer-benchmarks.html

一个选择:MessagePack似乎是最快的程序。也许你可以给它一试。

粗麻布满足所有的要求。那里是蟒蛇图书馆:

https://github.com/bgilmore/mustaine

官方文件的协议可以在这里找到:

http://hessian.caucho.com/

我经常利用它在Java和蟒蛇。它的工作并不需要书面协议的定义文件。我不能告诉你如何Python程序进行,但是Java版本是合理的效率:

https://github.com/eishay/jvm-serializers/wiki/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top