Понимание производительности numpy memmap

Я пытаюсь лучше понять, как memmap numpy обрабатывает представления очень больших файлов. Приведенный ниже скрипт открывает массив 2048^3 с отображением памяти и копирует его представление с уменьшенной дискретизацией 128^3

import numpy as np
from time import time

FILE = '/Volumes/BlackBox/test.dat'
array = np.memmap(FILE, mode='r', shape=(2048,2048,2048), dtype=np.float64)

t = time()
for i in range(5):
    view = np.array(array[::16, ::16, ::16])
t = ((time() - t) / 5) * 1000
print "Time (ms): %i" % t

. Обычно это печатает Time (ms): 80или около того. Однако, если я изменю назначение вида на

view = np.array(array[1::16, 2::16, 3::16])

и запускаю его три раза, получаю следующее:

Time (ms): 9988
Time (ms): 79
Time (ms): 78

Кто-нибудь понимает, почему первый вызов намного медленнее?

5
задан ChrisB 6 August 2012 в 16:28
поделиться