]> granicus.if.org Git - python/commit
Make framing optional in pickle protocol 4.
authorAlexandre Vassalotti <alexandre@peadrop.com>
Sun, 24 Nov 2013 04:30:03 +0000 (20:30 -0800)
committerAlexandre Vassalotti <alexandre@peadrop.com>
Sun, 24 Nov 2013 04:30:03 +0000 (20:30 -0800)
commitb6a2f2a0d1e32497ba1dbb12e4a16216ccb12913
tree7fd17db5b4be11cc49f1f6f89aeb49a4a44ba328
parent1889623e1a49e38df6d10171e4a4256dfcb8916b
Make framing optional in pickle protocol 4.

This will allow us to control in the future whether to use framing or not.
For example, we may want to turn it off for tiny pickle where it doesn't
help.

The change also improves performance slightly:

### fastpickle ###
Min: 0.608517 -> 0.557358: 1.09x faster
Avg: 0.798892 -> 0.694738: 1.15x faster
Significant (t=3.45)
Stddev: 0.17145 -> 0.12704: 1.3496x smaller
Timeline: http://goo.gl/3xQE1J

### pickle_dict ###
Min: 0.669920 -> 0.615271: 1.09x faster
Avg: 0.733633 -> 0.645058: 1.14x faster
Significant (t=5.05)
Stddev: 0.12041 -> 0.02961: 4.0662x smaller
Timeline: http://goo.gl/LpLSXI

### pickle_list ###
Min: 0.397583 -> 0.368112: 1.08x faster
Avg: 0.412784 -> 0.397223: 1.04x faster
Significant (t=2.78)
Stddev: 0.01518 -> 0.03653: 2.4068x larger
Timeline: http://goo.gl/v39E59

### unpickle_list ###
Min: 0.692935 -> 0.594870: 1.16x faster
Avg: 0.730012 -> 0.628395: 1.16x faster
Significant (t=17.76)
Stddev: 0.02720 -> 0.02995: 1.1012x larger
Timeline: http://goo.gl/2P9AEt

The following not significant results are hidden, use -v to show them:
fastunpickle.
Lib/pickle.py
Lib/test/pickletester.py
Modules/_pickle.c