]> git.wincent.com - wikitext.git/commitdiff
Improve efficiency of _Wikitext_pop_all_from_stack
authorWincent Colaiuta <win@wincent.com>
Fri, 8 May 2009 12:50:31 +0000 (14:50 +0200)
committerWincent Colaiuta <win@wincent.com>
Fri, 8 May 2009 12:50:31 +0000 (14:50 +0200)
Use a for-loop instead of repeatedly calling ary_entry inside
a while-loop. The simple integer comparison will be faster
than the function call. (And in any case, the
_Wikitext_pop_from_stack function which is called here will
do an ary_entry call anyway; so what's really happening here
with this change is that we call ary_entry once for each item
instead of twice.)

Signed-off-by: Wincent Colaiuta <win@wincent.com>
ext/parser.c

index 808b5805ea92732721693c026e543e29e2526e31..828d2bc0e05b9cbf2cd432b2b6a1067fbd0b598e 100644 (file)
@@ -491,7 +491,7 @@ void _Wikitext_pop_from_stack_up_to(parser_t *parser, VALUE target, int item, VA
 
 void _Wikitext_pop_all_from_stack(parser_t *parser, VALUE target)
 {
-    while (!NO_ITEM(ary_entry(parser->scope, -1)))
+    for (int i = 0, max = parser->scope->count; i < max; i++)
         _Wikitext_pop_from_stack(parser, target);
 }