Skip to content

Instantly share code, notes, and snippets.

@kemingy
Created November 11, 2020 03:18
Show Gist options
  • Select an option

  • Save kemingy/bd9492bbb3d50d8cd44cef4718dcd04c to your computer and use it in GitHub Desktop.

Select an option

Save kemingy/bd9492bbb3d50d8cd44cef4718dcd04c to your computer and use it in GitHub Desktop.
pickle is just very slow...
import pickle
import numpy as np
img = np.random.rand(3, 1000, 1000)
data = img.tobytes()
def dump(arr):
return pickle.dumps((arr.tobytes(), arr.dtype, arr.shape))
def load(data):
byte, dt, shape = pickle.loads(data)
arr = np.frombuffer(byte, dtype=dt)
arr.resize(shape)
return arr
%timeit pickle.loads(pickle.dumps(img))
# 17.9 ms ± 100 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit load(dump(img))
# 18.8 ms ± 286 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit pickle.dumps(img)
# 12.3 ms ± 101 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit dump(img)
# 12.5 ms ± 255 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit pickle.dumps(data)
# 6.63 ms ± 179 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit img.tobytes()
# 5.87 ms ± 120 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment