Revision
400
Author
lsansonetti@apple.com
Date
2008-08-02 22:23:47 -0700 (Sat, 02 Aug 2008)

Log Message

faster Array#count

Modified Paths

Diff

Modified: MacRuby/branches/lrz_unstable/array.c (399 => 400)


--- MacRuby/branches/lrz_unstable/array.c	2008-08-03 05:23:25 UTC (rev 399)
+++ MacRuby/branches/lrz_unstable/array.c	2008-08-03 05:23:47 UTC (rev 400)
@@ -3351,17 +3351,14 @@
     }
     else {
 	VALUE obj;
-	long i, count = RARRAY_LEN(ary);
+	long count = RARRAY_LEN(ary);
 
 	rb_scan_args(argc, argv, "1", &obj);
 	if (rb_block_given_p()) {
 	    rb_warn("given block not used");
 	}
 #if WITH_OBJC
-	for (i = 0; i < count; i++) {
-	    if (rb_equal(RARRAY_AT(ary, i), obj)) 
-		n++;
-	}
+	n = CFArrayGetCountOfValue((CFArrayRef)ary, CFRangeMake(0, count), RB2OC(obj));
 #else
 	for (p = RARRAY_PTR(ary), pend = p + RARRAY_LEN(ary); p < pend; p++) {
 	    if (rb_equal(*p, obj)) n++;