.Net上真正的计算利器ILNumerics
2012-10-13 01:11
302 查看
起因:前段时间写程序时需要大量的线性代数方面的运算,当时比较了几种.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是开源软件!
我将在下一篇文章中简单介绍一下ILNumerics入门使用,以供参考。
在读了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是开源软件!
我将在下一篇文章中简单介绍一下ILNumerics入门使用,以供参考。
相关文章推荐
- .Net高性能数值计算库—ILNumerics.Net
- 使用ILNumerics在.Net执行计算
- Math.net,.net上的科学计算利器
- 通过IL了解.Net中表达式计算过程
- Math.net,.net上的科学计算利器
- Math.net,.net上的科学计算利器
- .NET / Rotor源码研究3 – 调试Rotor托管代码的利器:WinDbg和SOS
- .NET使用Task动态创建多任务多线程并行程序计算Redis集群keys计算
- 由.Net类库提供的农历计算(C#农历)
- .NET反编译利器Red Gate's .NET Reflector
- .NET / Rotor源码研究3 – 调试Rotor托管代码的利器:WinDbg和SOS
- 并行计算实现判断一个数是不是素数--Win32和.Net两种方式结合
- (转)浅谈.NET下的多线程和并行计算(二)线程基本知识
- Flex 和.NET协同开发利器FluorineFx
- “透明计算”到底是什么鬼?让“透明计算”真正透明!
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十七八║Vue基础: 指令(下)+计算属性
- 小试 .NET 4.0 之 并行计算
- .net跨平台解决方案------mono真正实现C#代码一次编写处处运行
- 判断是否安装Framework+飞信虚拟机模拟环境 .net真正脱离框架
- 用.NET判断上传文件类型的三种方法,最后一种真正意义上的判断