我正在寻找一种方法,使用.NET进行适当的算法编码,具有现代语言的所有好处(例如,我喜欢强类型检查,运算符重载,lambda,泛型算法).通常我用C++编写算法(主要是图像处理).由于F#作为一种语言似乎很有趣,我玩了一下,但似乎很慢.作为一个最简单的测试我只做了一些数组操作 - >图像的亮度增加:
let r1 = rgbPixels |> Array.map (fun x -> x + byte(10) )
Run Code Online (Sandbox Code Playgroud)
它似乎比比较C++实现至少慢8倍 - 对于更复杂的算法,例如2D卷积,情况更糟.有没有更快的方法或我错过任何特定的编译器设置(是的,建立发布优化...)?我愿意为这个好的和高的抽象付出代价,但是这样的开销并不好(我需要在8个内核上进行并行化以补偿:)) - 至少它会破坏进一步学习的动力......我的其他选择将我的更重的算法留在C++中并与manged C++接口,但这并不好,因为维护托管包装将是一个相当大的负担.