built-in 関数なのに知らなかった。大規模なバイト列を利用する場合、 memoryview
で無駄なコピーを避けることで、負荷を大幅に下げることが出来る。
$ ipython
In [1]: a = b'a' * int(1e9)
In [2]: %time b = a[:int(1e8)]
CPU times: user 13.7 ms, sys: 24.3 ms, total: 38.1 ms
Wall time: 37.9 ms
In [3]: mv = memoryview(a)
In [4]: %time c = mv[:int(1e8)]
CPU times: user 12 µs, sys: 3 µs, total: 15 µs
Wall time: 20.7 µs
1GBのデータから初めの100MBを取得する処理の場合、約1000倍速。