从Haskell后端交互式发送图像到Qt QUI的最佳方法

rem*_*ezx 5 c++ performance qt rpc haskell

我正在构建一个由两部分组成的应用程序:QtQuick GUI(C++)和Haskell后端处理图像使用repaaccelerate包.

我想在GUI中以交互方式显示图像.我不想复制数据,但使用某种共享内存或任何其他机制,这将使我获得最大的性能.

在C++ GUI中以交互方式"传输"和显示这些图像的最佳方法是什么?

我听说过HQKqtHaskell,但它仅支持qtquick高达V4.8(我们需要V5.0 - V5.2)

Kak*_*adu 1

我不确定Haskell,但在lablqt(我的用于构建QtQuick+OCaml应用程序的库,http://kakadu.github.io/lablqt/)中我会尝试这种方法:

  1. 我们将图像存储在 OCaml/Haskell 端作为可变的字符数组(在 OCaml 中称为字符串),并防止 GC 移动该值。
  2. 在 C++ 方面,我们存储图像的地址并使用它来构建 QString。我不期望任何复制,因为 QString 使用写时复制。
  3. 利润

也许这种方法很糟糕,因为如果我们需要调整图像大小,GC 将实例化新图像,将旧图像复制到新图像,然后我们需要在 C++ 端更新指向图像的指针。

抱歉,在我的想法中将无法使用。