.NET/C#和Java高性能数学库

7
我们目前有一个使用Intel Math Kernel Library的高性能C++科学应用程序。
我们考虑编写一个基准测试应用程序,使用Java和.NET/C#来比较性能差异。为此,我们还需要一个好的(商业优先)数学库。是否有任何Java/C#等价的数学库?
另外提一下:C++有Intel TBB库来帮助多线程处理。.NET/C#和Java是否有类似的东西?

你有没有考虑为C#和Java编写一个C++库的包装器? - Aaron M
1
Java有java.util.concurrent和子包。我对TBB不太熟悉,但这是Sun进行线程处理的方式。 - KitsuneYMG
@Aaron:是的,我也考虑过那个问题。不过还是谢谢你的评论。 - sivabudh
6个回答

4

嘿,谢谢你提供的链接。顺便问一下,你在科学界吗?如果是的话,你工作中使用C#吗?你有没有使用过任何C#(高性能)数学库的经验? - sivabudh
我编写了一个名为Micro Saint Sharp的离散事件模拟应用程序。我们在7年前从C语言转换到了C#。性能非常好。我没有使用任何外部数学库。我们仅使用一个特殊的数学类来计算各种随机分布,其性能从未成为模拟瓶颈。 - Jake Pearson
我很惊讶C#的性能与C相当。听到这个消息真是太好了! - sivabudh
我们之前的引擎是用C语言编写的,但模拟脚本引擎是解释型的。现在模拟器是用编译型的C#语言编写的,因此性能比旧系统提高了约1000倍。我怀疑对于许多非常重的数学运算,经过精心调整的C语言会胜过C#语言。 - Jake Pearson
是的,我发现在线性代数方面,C#和手工调整的SIMD优化C之间的差异大约是10倍。但这是一个特殊情况。 - Crashworks

4

1
这个项目好像很久没有更新了(自2004年以来?) - sivabudh

2

1

1
主要的论点是,由此产生的C#代码不再可移植到例如mono/linux,因为它依赖于在CLR之外运行的API/DLL。 - redcalx
感谢您的好意。我在Intel MKL论坛上发布了一个问题,想了解MKL Linux版本是否与Mono实现兼容。如果不行,他们有什么计划。再次感谢。 - sivabudh
@the-locster:英特尔回应说尚不支持Mono。真遗憾啊。 - sivabudh

1

ALGLIB是一个跨平台的数值分析和数据处理库。它是免费的 - ALGLIB在GPL许可证(版本2或更高版本)下分发。它包含以下内容:

微分方程

线性方程

矩阵和向量运算,特征值和特征向量

数值积分,插值和拟合,优化

FFT,卷积,相关

统计学:一般算法,假设检验

数据分析:分类,回归,其他任务

特殊函数


0

算术是一个包含大量数值算法的库。它得到良好支持,并且有Java和免费的C#版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接