首页 > 解决方案 > 为什么 ctypes.memmove 对于不同大小的大小需要恒定的时间

问题描述

当我运行以下代码时,

import numpy as np
import ctypes

src = np.zeros(10000, dtype=np.uint8)
dest = np.zeros(10000, dtype=np.uint8)

%timeit ctypes.memmove(dest.ctypes.data, src.ctypes.data, 10)
%timeit ctypes.memmove(dest.ctypes.data, src.ctypes.data, 10000)

在我的笔记本电脑上,输出是

42.2 µs ± 5.62 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

用于复制 10 个字节并且是

41.4 µs ± 3.48 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

用于复制 10000 个字节。

我的问题是:为什么 ctypes.memmove 对于不同大小的大小需要恒定的时间?

标签: pythonmemorymemmove

解决方案


因为调用开销会占用复制时间。在 3GHz 系统上,10,000 字节将在大约一微秒内复制。尝试 10,000,000 字节。


推荐阅读