; cat x.cpp #include void foo() { throw 1; } int main() { for(int i = 0; i < 1000000; ++i) { try { foo(); } catch(...) {} } } ; c++ x.cpp -o a.out ; time ./a.out 8.230u 0.010s 8.204r ./a.out ; cat x.scm (define (foo k) (k 123)) (let loop ((i 0)) (if (>= i 1000000) (begin (call-with-current-continuation (lambda (k) (foo k))) (loop (+ i 1))))) ; csc x.scm -o a.out ; time ./a.out 0.010u 0.000s 0.010r ./a.out