C# 和 Visual Basic 以及 .NET CLR 是用于用户界面和业务线应用程序等的优秀开发环境。
但是,我一直在编写很多代码,它们的执行时间O(n^3): n > 1000
比这要高,而且在几个地方。基本上,这些循环从一个大数组中读取,做一些数学运算并进行五六次测试,然后将结果写入第二个相同大小的数组。
其中大部分是从英特尔 Fortran 程序移植的代码,以便将它们带入 64 位世界。我注意到,如果没有对该代码进行任何自动矢量化,执行时间会慢得多。.NET 不支持使用目前销售的每个英特尔处理器上的 SIMD 操作。
由于函数已经以严格的算法编写,可以由熟练的程序员移植,我认为要求程序员将代码移植到 C++ CLR 库可能是一种方法。
- 是否可以获得一个自动矢量化的 C++ 库,并且还提供一个 CLR 接口供 C#/VB 程序调用?
- 如果没有,是否存在解决方法?COM 接口是一种这样的解决方法吗?
- 如果是,它必须采取什么形式?