如何在Ruby中调用Ruby的内部C方法?

时间:2010-12-22 20:14:17

标签: c ruby

我正在尝试从数组创建哈希,http://ruby-doc.org/ruby-1.9/classes/Array.src/M000744.html的文档显示了一个名为ary_make_hash的内部ruby方法。源使用它来区分数组。源中的相关行是:ary_make_hash(to_ary(ary2),0);

有没有办法从Ruby内部访问ary_make_hash函数和其他内部Ruby函数?我问,因为我正在尝试将一个巨大的数组转换为哈希值,我很乐意使用内置的C方法,因为它们的速度要快得多。 (仅供参考我可以通过减去两个数组来看到速度差异,这两个数组在内部调用转换器方法)。谢谢你的任何想法。

罗伯特

3 个答案:

答案 0 :(得分:1)

一般来说,如果它不在ruby.h中,那么它不是“公共”API 寻找一种名为rb_xxx的方法也可能有所帮助。 GL。

答案 1 :(得分:1)

这些变化都不够快吗?你根本没有在Ruby中做很多事情,而是依赖内置的数组到哈希转换。

a1 = [[:a,1],[:b,2],[:c,3]]
h1 = Hash[a2]
#=> {:a=>1, :b=>2, :c=>3} 

a2 = a1.flatten
h2 = Hash[*a2]
#=> {:a=>1, :b=>2, :c=>3}     

答案 2 :(得分:0)

该函数是静态的,根据这个:http://www.lix.polytechnique.fr/~liberti/public/computing/prog/c/C/SYNTAX/static.htm

表示无法从array.c文件外部引用它。

因此,为了使用它,您必须实际破解源代码。