例如,CInt
vs Int#
vs. CInt#
之间的关系是什么?
例如,如果我调用一个返回 CInt
的外部函数,它是否已经是一个 CInt#
构造(即,它是堆栈上的原始 int
,而不是指向包含 int
的堆上某物的指针)?
在这种情况下, CInt
和 Int#
之间有什么区别?
如果我想尽可能地提高性能,那么应该使用 CInt
和 Int#
以及 CInt#
中的哪一个?
最佳答案
我不认为有 CInt#
这样的东西。
CInt
只是一个自定义类型,它保证可以很好地与 C
配合使用(请参阅 the blurb at the top of this page 了解更正式的内容)。它是盒装的,因此您会因此而受到性能影响。 Int#
是一个“神奇”的未装箱整数。事实证明,它是 does play well with the FFi ,所以如果你想要每一点性能,就使用它。 关于haskell - Haskell 中的外部类型与未装箱的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41448940/