如何从Ruby C VM中加载的脚本中获取基准?
我有一个Ruby虚拟机集,如下所示:如何从Ruby C VM中加载的脚本中获取基准?,c,ruby,C,Ruby,我有一个Ruby虚拟机集,如下所示: int ruby_state = 0; ruby_init(); // some rb_define rb_protect(rb_require, (VALUE)"./script.rb", &ruby_state); ruby_cleanup(ruby_state); require 'benchmark' 我想在我的C函数上做一些基准测试。我试图在script.rb中添加require,如下所示: int ruby_state = 0;
int ruby_state = 0;
ruby_init();
// some rb_define
rb_protect(rb_require, (VALUE)"./script.rb", &ruby_state);
ruby_cleanup(ruby_state);
require 'benchmark'
我想在我的C函数上做一些基准测试。我试图在script.rb
中添加require,如下所示:
int ruby_state = 0;
ruby_init();
// some rb_define
rb_protect(rb_require, (VALUE)"./script.rb", &ruby_state);
ruby_cleanup(ruby_state);
require 'benchmark'
我犯了一个错误:
script.rb:1:in `require': cannot load such file -- benchmark (LoadError)
如何从该脚本中获取基准测试?我找到了两种方法来实现这一点 安装了Ruby之后 就在
ruby\u init()
之后,我需要添加ruby\u init\u loadpath()
没有安装Ruby
这一次,有点棘手。在所需的第一个ruby脚本的开头,我们需要添加以下行:
$LOAD_PATH.unshift File.expand_path(File.join(__dir__, "/gems/"))
其中“/gems/”
是存储gems的子文件夹。也许也可以通过C api实现这一点,但它可能与Ruby中的一些rb_funcall
和rb_intern
相同,因为Ruby源代码中与加载路径相关的api是static