Til*_*ilo 7 ruby arrays numerical-computing narray
我刚刚遇到了Ruby的NArray库 - 请原谅我这个问题时的无知:)
使用NArray库比标准Ruby Array实现有什么好处?
我已经看到NArray面向数值计算,但是看看API,看起来只有几个扩展而不是数字值 - 没有你不能用Array做的事情.
谷歌并没有真正想出这个问题的有用解释.
参考资料我发现:
http://rubydoc.info/gems/narray-ruby19/0.5.9.7/NArray
mas*_*a16 10
另见关于NArray的幻灯片:http://www.slideshare.net/masa16tanaka/narray-and-scientific-computing-with-ruby
看起来像Array只有几个扩展
不,它与Array完全不同.NArray具有许多数值函数和多维特征.另一方面,NArray是静态的; 它没有push/pop方法等.NArray的方法列表是http://narray.rubyforge.org/SPEC.en
_1.为什么不使用Array?
Array拥有Ruby Objects.保持数值是低效的.
_2.是否有巨大的速度优势?
是.上面幻灯片中的第36页显示NArray的速度提高了50倍.
请注意,如果循环是用Ruby编写的,则Array比NArray快.
_3.有巨大的记忆优势吗?
是.至于Float值,在我的64位Linux机器上,Array消耗的内存大约是NArray的4倍.
_4.使用常规Ruby Array类还有什么优势?
我已经看到 NArray 是面向数值计算的,但是从 API 来看,似乎只有少数针对数值的 Array 扩展——没有什么是你不能用 Array..
您错过了最重要的一点:NArray不仅扩展用于数值处理,而且还受到限制。特别是
NArray元素只能是固定大小的整数或浮点数NArrays 本身也是固定大小的,它们不能缩小或增长的实现NArray可以利用这些限制来提供卓越的性能。