Я решил сравнить производительность NumPy ndarray.tofile
со стандартным f.write
, и я был удивлен тем, каковы результаты.Почему tofile
~ 30x медленнее, чем обычная запись в файл?Производительность tofile
лучше, чем f.write
для огромных наборов данных?
ЗАПИСЬ:
ndarray.tofile (файл): 10,668 с
timeit.timeit("a.tofile(f)", "import numpy as np; dt=np.dtype('B'); f=open('test.x','wb'); a=np.array(range(100),dt)")
запись |file.write (ndarray.tobytes ()): 0,316 с
timeit.timeit("f.write(a.tobytes())", "import numpy as np; dt=np.dtype('B'); f=open('test.x','wb'); a=np.array(range(100),dt)")
READ:
np.array (список(f.read ()), dt): 11,544 с
timeit.timeit("a=np.array(list(f.read()),dt)", "import numpy as np; dt=np.dtype('B'); f=open('test.x','rb');")
np.fromfile (f, дт): 11,544 с
timeit.timeit("a=np.fromfile(f,dt)", "import numpy as np; dt=np.dtype('B'); f=open('test.x','rb');")