Cairo Graphics在其他语言中比c慢吗?以Haskell为例?

nic*_*et8 3 c performance haskell cairo

我已经在c中使用了Cairo Graphics一段时间了,我想在更高级的语言中使用它(即Haskell,我也尝试过Python).它的确有效,但我内心并没有清楚地了解它的工作原理.

编译我的Haskell源时,对象文件中与cairo相关的部分是否与从ac源编译的相同?

cairo_line_to (cr, 100, 100)c编译成与LineTo 100 100Haskell 相同的机器代码吗?性能是否相同?

Car*_*arl 9

大多数语言调用C库都会产生一些FFI开销.每次调用C函数时,这是一个小的(通常)常量开销,但如果你进行大量调用,它会加起来.

这不是调用C的唯一因素,因为它的价值.任何内存管理系统的交叉都可以完成任务.这就是为什么现代OpenGL建议尽可能多地在以巨大块发送数据到图形内存的调用中,而不是一次一个三角形.