Haskell FFI内存分配性能问题

oob*_*man 5 c++ performance haskell ffi

我正在使用FFI来向C程序发送中等大量数据(~100MB) - 只是一个字符串列表.但是,我使用的所有方法似乎花费了不合理的时间(约10秒).在分析时,它似乎是需要时间的实际内存分配.我试过了:

  • 作为常规字符串发送(newCString)
  • 转换为ByteStrings(unsafeUseAsCString)
  • 转换为chars(unsafeWith >>= withForeignPtr ...)的向量

在C FFI上发送数据的最快方法是什么?

scl*_*clv 0

正如 Reid Barton 在评论中所说,如果你有 100MB 的字符串,那么无论你用它做什么,你的分配一开始就会很糟糕。

你的速度变慢不是来自 FFI,而是因为一开始就拥有 100MB 的字符串。