我目前正在使用数组,我决定尝试通过使用 .include 替换和迭代搜索排序数组来加速我的一个函数?令我惊讶的是,该程序的总运行时间从 2:12 变为 9:53。对此感到困惑,我去查看 .include 的源代码?事实证明这只是用 C 编写的迭代检查
rb_ary_includes(VALUE ary, VALUE item)
{
long i;
for (i=0; i<RARRAY_LEN(ary); i++) {
if (rb_equal(RARRAY_AREF(ary, i), item)) {
return Qtrue;
}
}
return Qfalse;
}
有没有更快的方法来确定某个项目是否在排序数组中,也许是宝石?还是需要用您自己的二进制搜索方法编写困难的事情?