Gah -- I forgot to eval the expression in the second case -- then it's 1600, which is more what I expected. for (i = 0; i < 2000000; i++) s7_eval(s, s7_list_nl(s, 4, s7_make_symbol(s, "list"), \ s7_make_integer(s, 1), \ s7_make_integer(s, 2), \ s7_make_integer(s, 3), \ NULL), s7_rootlet(s));