python - 为什么 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 对于不同大小的大小需要恒定的时间?
解决方案
因为调用开销会占用复制时间。在 3GHz 系统上,10,000 字节将在大约一微秒内复制。尝试 10,000,000 字节。
推荐阅读
- react-native - 在 mac m1 上使用 Detox 和 Android 模拟器运行 E2E 测试
- android - 在 VS Code 中的 Flutter 项目的根项目“android”中找不到任务“assembleDebug”
- node.js - 升级到 v16 时如何使用 Node 清除 Heroku 中的缓存?
- ruby-on-rails - 在 Heroku 上运行许多 rake 任务时出现内存问题
- reactjs - 上传文件时转到错误的 url
- python - 如何在程序运行时在 Python 中更新 tkinter texbox
- azure-devops - 天蓝色静态 Web 应用程序,如何从同一个 git 存储库构建两个不同的 Web 应用程序(一个产品和一个非产品)?
- c - 创建一个字符串的副本,但在 C 中反转
- javascript - 来自用户输入的维度数组,然后在 JavaScript 中进行转换
- python - 获取熊猫数据框中每一行中非零值的列索引