【发布时间】:2014-02-27 02:40:44
【问题描述】:
我正在寻找可以使用 SSD/MMX/3DNow/SIMD(随便)以极快的速度将 2D 阵列复制到另一个(更大)2D 阵列的东西。我不想自己实现,只是寻找一个高度优化的支持和维护的解决方案。我在 Linux 上使用 Clang(++)。
memcyp2Di(int *src, int *dest, int srcw, int srch, int destw, int desth, int destx, int desty)
【问题讨论】:
-
您应该能够循环执行
memcpy并获得可接受的性能。 -
std::copyen.cppreference.com/w/cpp/algorithm/copy -
我认为正确的方法是使用 linux 直接渲染基础设施中可用的 blitting 功能。他们将使用一些快速实现,可能会卸载到图形卡或某些 DMA 引擎。如果由于 NVIDIA 专有驱动程序缺乏支持而无法使用 DRI,则使用 cairo 表面或 OpenGL 将是一种独立于硬件(甚至是跨平台)的解决方案。我没有这方面的经验,所以我不能直接回答,但我希望这会有所帮助。
-
@hdante,将数据发送到您的视频板很慢,将其发送回您的主内存更慢。在这种情况下,这不会给你带来任何好处。