BitBlt性能

时间:2009-06-12 18:39:31

标签: image tiff bitblt

我有一个将多页tiff分成单个页面的函数,它使用windows BitBlt函数。在性能方面,视频卡对分割有影响吗?是否值得使用直接的C / C ++库?

2 个答案:

答案 0 :(得分:2)

如果BitBlt可以将页面映射到视频内存中,那么您的视频卡很可能比CPU快得多。这有几个原因:

  • 该卡将与您的CPU并行运行,因此您可以在其运行时执行其他工作。
  • 视频卡经过优化,可以自行执行内存复制,而不必让CPU将每个字从一个地方复制到另一个地方。这样可以释放CPU总线以备其他用途。
  • 视频卡可能有更大的字大小用于数据移动,如果您的blit附加了任何操作标志,那么这些可能会被硬件优化。此外,大多数视频卡上的内存都比系统内存快。

请注意,这些事情并非总是如此。例如,如果您的卡共享系统内存,那么它将无法比CPU更快地访问内存。但是,您仍然可以获得并行支持。

最后,将图像传输到卡上并返回的开销可能会超过您在卡上执行此操作所带来的速度提升。所以你只需要进行实验。

我应该添加 - 我相信您需要在设备上下文中指定内存在卡上。我不认为只是创建一个内存上下文会对视频卡做任何特别的事情。

答案 1 :(得分:2)

视频卡不会参与任何活动,除非它是BitBlt的目标HDC。专用于成像功能的库应该更好地完成此任务,因为最终您将把这些写入磁盘。

如果您对图像数据进行了更改,那么使用您的视频卡可能会有所帮助;但是,只有当您为目标tiff渲染大量新图像数据时,尤其是3D场景等。