X-FeedAbuse: http://nntpfeed.proxad.net/abuse.pl feeded by 88.191.16.109 Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.dougwise.org!nntpfeed.proxad.net!nospam.fr.eu.org!talisker.lacave.net!lacave.net!not-for-mail From: Ville Sipola Newsgroups: comp.lang.ruby Subject: Fast way to move C array to ruby (rb_ary_new4)? Date: Wed, 27 Apr 2011 05:46:33 -0500 Organization: Service de news de lacave.net Lines: 31 Message-ID: <7bb00dec91cd520ed45220d7d899f294@ruby-forum.com> NNTP-Posting-Host: bristol.highgroove.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Trace: talisker.lacave.net 1303901217 52838 65.111.164.187 (27 Apr 2011 10:46:57 GMT) X-Complaints-To: abuse@lacave.net NNTP-Posting-Date: Wed, 27 Apr 2011 10:46:57 +0000 (UTC) X-Received-From: This message has been automatically forwarded from the ruby-talk mailing list by a gateway at comp.lang.ruby. If it is SPAM, it did not originate at comp.lang.ruby. Please report the original sender, and not us. Thanks! For more details about this gateway, please visit: http://blog.grayproductions.net/categories/the_gateway X-Mail-Count: 382246 X-Ml-Name: ruby-talk X-Rubymirror: Yes X-Ruby-Talk: <7bb00dec91cd520ed45220d7d899f294@ruby-forum.com> Xref: x330-a1.tempe.blueboxinc.net comp.lang.ruby:3557 Good day I have a number of large arrays in a C module, and I'd need to move them to ruby as quickly as possible. Currently I use the following type of an approach: instance_array_in_ruby = rb_iv_get(calling_class, "@x"); double c_array[1000000]; for(i=0;i<1000000;i++) { rb_ary_store(instance_array_in_ruby, i, rb_float_new(c_array[i])); } But that's slow, apparently due to the large number of rb_float_new:s. There is a function called rb_ary_new4 that would seem to fit the purpose of quickly moving an entire C array to ruby. Only I'm unable to get it work, as it, too requires VALUE:s. I've tried many things including mumbo-jumbo like rb_iv_set(calling_class,"@x",rb_ary_new4(1000000, (VALUE)c_array));, but I'm only managing to get segfaults or solutions that still need a million rb_something_new:s. Would you know an efficient way of moving a large data from C array to ruby array? -- Posted via http://www.ruby-forum.com/.