[macruby-changes] [130] MacRuby/trunk/array.c
source_changes at macosforge.org
source_changes at macosforge.org
Fri Apr 4 13:59:59 PDT 2008
Revision: 130
http://trac.macosforge.org/projects/ruby/changeset/130
Author: lsansonetti at apple.com
Date: 2008-04-04 13:59:58 -0700 (Fri, 04 Apr 2008)
Log Message:
-----------
faster Array#index
Modified Paths:
--------------
MacRuby/trunk/array.c
Modified: MacRuby/trunk/array.c
===================================================================
--- MacRuby/trunk/array.c 2008-04-02 00:47:10 UTC (rev 129)
+++ MacRuby/trunk/array.c 2008-04-04 20:59:58 UTC (rev 130)
@@ -1184,21 +1184,30 @@
rb_ary_index(int argc, VALUE *argv, VALUE ary)
{
VALUE val;
- long i;
+ long n, i;
+ n = RARRAY_LEN(ary);
if (rb_scan_args(argc, argv, "01", &val) == 0) {
RETURN_ENUMERATOR(ary, 0, 0);
- for (i=0; i<RARRAY_LEN(ary); i++) {
+ for (i=0; i<n; i++) {
if (RTEST(rb_yield(RARRAY_AT(ary, i)))) {
return LONG2NUM(i);
}
}
}
else {
- for (i=0; i<RARRAY_LEN(ary); i++) {
+#if WITH_OBJC
+ CFIndex idx;
+ idx = CFArrayGetFirstIndexOfValue((CFArrayRef)ary, CFRangeMake(0, n),
+ (const void *)val);
+ if (idx != -1)
+ return LONG2NUM(idx);
+#else
+ for (i=0; i<n; i++) {
if (rb_equal(RARRAY_AT(ary, i), val))
return LONG2NUM(i);
}
+#endif
}
return Qnil;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080404/06ba9d91/attachment.html
More information about the macruby-changes
mailing list