我刚刚遇到了 Ruby 的 NArray 库——请原谅我在问这个问题时的无知:)
与标准 Ruby Array 实现相比,使用 NArray 库有哪些优点?
我已经看到 NArray 是面向数值计算的,但是看看 API,看起来好像只有一些针对数值的 Array 扩展——没有什么是你不能用 Array 做的。
- 为什么不直接使用数组呢?
- 是否有巨大的速度优势?
- 是否有巨大的内存优势?
- 与使用常规 Ruby Array 类相比,还有其他优点吗?
谷歌并没有真正对这个问题给出有用的解释。
我找到的参考资料:
http://rubydoc.info/gems/narray-ruby19/0.5.9.7/NArray http://rubydoc.info/gems/narray-ruby19/0.5.9.7/NArray
http://narray.rubyforge.org/index.html.en http://narray.rubyforge.org/index.html.en
http://raa.ruby-lang.org/project/narray/ http://raa.ruby-lang.org/project/narray/
另请参阅有关 NArray 的幻灯片:http://www.slideshare.net/masa16tanaka/narray-and-scientific-computing-with-ruby http://www.slideshare.net/masa16tanaka/narray-and-scientific-computing-with-ruby
看起来只有一些对数组的扩展
不,它与Array完全不同。
NArray 具有许多数值函数和多维特征。
另一方面,NArray 是静态的;它没有push/pop方法等。
NArray 的方法列表是http://narray.rubyforge.org/SPEC.en http://narray.rubyforge.org/SPEC.en
_1.为什么不直接使用数组呢?
数组保存 Ruby 对象。保存数值的效率很低。
_2.是否有巨大的速度优势?
是的。上述幻灯片的第 36 页显示 NArray 的速度提高了 50 倍。
请注意,如果循环是用 Ruby 编写的,则 Array 比 NArray 更快。
_3.是否有巨大的内存优势?
是的。至于 Float 值,在我的 64 位 Linux 机器上,Array 消耗的内存大约是 NArray 的 4 倍。
_4。与使用常规 Ruby Array 类相比,还有其他优点吗?
- 支持多维数组
- 支持数值函数
- 不需要对数组项进行垃圾回收。对于大型数组,GC 需要花费大量时间。
- etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)