For these runs, test.scm contains 1000 forms consisting of just "(print #t)" Original implementation using sprintf concatenation ~/chicken-test/bin/csc -t /tmp/test.scm 48.39s user 9.61s system 96% cpu 1:00.12 total procedure calls seconds average percent ---------------------------------------------------------------------------------------- compile-source-file 1 57.689 57.689 100.000 ##compiler#generate-code 1 54.039 54.039 93.673 ##compiler#real-name 2006 52.750 0.026 91.438 ##sys#hash-table-ref 1655472 36.798 0.000 63.787 ##compiler#get 570725 21.410 0.000 37.112 ##sys#hash-symbol 1671989 17.649 0.000 30.594 ##sys#decompose-lambda-list 7035 1.703 0.000 2.951 ##compiler#analyze-expression 4 1.463 0.365 2.535 ##compiler#perform-high-level-optimizations 3 1.025 0.341 1.776 New implementation using string-intersperse ~/chicken-test/bin/csc -t /tmp/test.scm 11.03s user 9.34s system 95% cpu 21.392 total procedure calls seconds average percent ---------------------------------------------------------------------------------------- compile-source-file 1 20.306 20.306 100.000 ##compiler#generate-code 1 16.577 16.577 81.635 ##compiler#real-name 2006 15.406 0.007 75.869 ##sys#hash-table-ref 1655472 9.335 0.000 45.971 ##compiler#get 570725 5.617 0.000 27.661 ##sys#hash-symbol 1671989 3.630 0.000 17.881 ##sys#decompose-lambda-list 7035 1.729 0.000 8.514 ##compiler#analyze-expression 4 1.490 0.372 7.337 ##compiler#perform-high-level-optimizations 3 1.031 0.343 5.077