You need to compile a dynamic module like this $ gsc 092.scm That will give you 092.o1 This invokes the gsc-cc-o.bat script which calls gcc with the correct arguments. For example, you weren't compiling your module in single-host mode as single-host is a preprocessor flag. $ time gsi 092.o1 SOLUTION = 8581147 real 0m27.238s user 0m27.014s sys 0m0.152s We can add some declarations to your scheme file (declare (standard-bindings) (extended-bindings) (block)) $ time gsi 092.o1 SOLUTION = 8581147 real 0m21.040s user 0m20.809s sys 0m0.192s And finally you can remove safety but mzscheme is compiling with safety... (declare (standard-bindings) (extended-bindings) (block) (not safe)) $ time gsi 092.o1 SOLUTION = 8581147 real 0m18.926s user 0m18.665s sys 0m0.172s