.Net高性能数值计算库—ILNumerics.Net
来源:互联网 发布:程序员需要看的书 编辑:程序博客网 时间:2024/06/10 01:50
起因:前段时间写程序时需要大量的线性代数方面的运算,当时比较了几种.Net上的数学库,选择使用了Math.net,它是支持.net的一个开源数学库,提供了包括线性代数,随机数生成器,概率统计傅立叶变换等一系列库函数。那时做的矩阵运算都不超过100x100,所以程序运行起来勉强还可以接受,但后来随着数据库增长,矩阵(从数据库获取数据构造)包含的数据量逐渐超过10000,程序就卡在那里不动了。在确认的确是矩阵运算导致程序性能急剧下降后,我不得不寻找新的数学库,最终我发现了ILNumerics!Math.net有的功能它基本都有,但ILNumerics的执行性能远远超过了Math.net。
在读了ILNumerics大量文档后,我先做了个小测试,计算大矩阵的逆矩阵,比较ILNumerics和Math.net的矩阵运算性能,结果如下图(由于我使用的计算中,矩阵求逆,转置和相乘使用较多,我仅比较了这几个,故不算严格测试,算个感性的估计吧,所以,就不给出测试代码了)。
可以看到,在计算大矩阵时,ILNumberics明显要快得多。经测试,ILNumerics在计算元素数量在千万级时仍然保持在30s以内,但Math.net的计算时间已经超过了我的耐心。
于是我正式将它用到正在开发的程序中,瞬间感到了飞的感觉。
独乐不如众乐,所以我简单介绍一下ILNumerics,希望可以帮到有需要的朋友。
--------------------------------------------*****-----------------------------------------------------------------------------**************----------------------------------------------------------------------------------------
首先是ILNumerics网站:http://ilnumerics.net/$Home.html。
然后当然要说说运行速度,大家都知道程序语言越高级,执行效率越低,所以在.net编写计算类的程序就要把性能放在首位。而ILNumerics在性能上做得相当出色。下面是来自官网(图片网址:http://ilnumerics.net/img/perfcomp_numpy_matlab_fortran_ilnumericsc_th.png)的一张图片,显示其优秀的执行性能。
ILNumerics主要在垃圾回收上下了功夫,所以运行速度甚至可以追赶本地C库函数。
另外,ILNumerics具有超强绘图功能,如果希望在程序中加入类似Matlab绘图功能的话,那么ILNumerics会是不错的选择,如下图所示(图片来自http://ilnumerics.net/$VisualExamples.html)。
还有和Matlab相似之处是,ILNumerics的矩阵运算有很多语法都和matlab很相似,使用它写相关运算时让人感觉就是在写matlab程序,这一点详细查看帮助文档就知道了。说到这里,就需要附带说一下,好软件一定要配套好文档,ILNumerics的文档是非常丰富的,让人用起来有理有据,入门迅速。
最后说一句,ILNumerics是开源软件!
- .Net高性能数值计算库—ILNumerics.Net
- .Net上真正的计算利器ILNumerics
- 使用ILNumerics在.Net执行计算
- 高性能asp.net
- 高性能计算库
- asp.net 高性能编程
- ASP.NET 高性能分页
- .NET中的高性能应用
- C语言编程常用数值计算的高性能实现
- ASP.NET数据格中计算数值总和
- ASP.NET数据格中计算数值总和DataGrid
- 开发高性能的 ASP.NET 应用程序
- 开发高性能的ASP.NET 应用程序
- 如何开发高性能ASP.NET应用程序
- .NET C# 高性能日志类
- .NET 3.5 高性能 Socket 服务 SocketAsyncEventArgs
- 开发高性能的 ASP.NET 应用程序
- 构建高性能ASP.NET站点 开篇
- 我的第一篇android学习博客,以及Activity活动的标题栏隐藏问题
- HDU:1069 Monkey and Banana
- 深入理解Android中ViewGroup
- matlab cell 函数用法
- 移动js及兼容整理
- .Net高性能数值计算库—ILNumerics.Net
- JS方法保存变量
- django模板中获取当前网址,当前用户
- 如何判断storyboard中的view conroller对应哪一个.h .m文件?
- iOS AVPlayer 后台播放问题自动停止问题 防止应用被后台挂起方法
- angularjs2 六
- Spring事务传播机制详解
- SHELL网络爬虫实例剖析
- iPhone6s/iPhone6s Plus苹果ios9怎么上Tumblr联合早报打不开怎么办