Hi again, Please forgive me creating next thread, but I didn't receive my previous mail and was not able to reply.
I found out what causes the problem with performance. The microcode contains a function named scan_frame. It basically searches for a symbol in the symbol list. This is done comparing names one by one from the beginning of the list up to the end. Because of that adding new definitions causes performance to drop. The version 7.5.17 searched for the symbols in the same way but when the symbol has been found it was adding it to some kind of cache for next time usages. Is MIT-Scheme team planning to improve this area of the microcode? I can offer a little of my time to implement some code but because I am not very familiar with the it I need some help/instructions what should be done to implement that correctly. Below top of the profiler log. Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls s/call s/call name 96.16 75.24 75.24 95074989 0.00 0.00 scan_frame 1.16 76.15 0.91 1 0.91 77.23 Interpret 0.56 76.59 0.44 21720917 0.00 0.00 lookup_variable 0.18 76.73 0.14 asm_scheme_to_interface 0.12 76.82 0.09 19424610 0.00 0.00 new_subproblem 0.10 76.90 0.08 19577380 0.00 0.00 end_subproblem 0.10 76.98 0.08 9610278 0.00 0.00 read_cc_entry_type 0.10 77.06 0.08 8792089 0.00 0.00 new_reduction 0.10 77.14 0.08 1061870 0.00 0.00 Prim_string_allocate 0.09 77.21 0.07 2713827 0.00 0.00 setup_lexpr_invocation 0.08 77.27 0.06 9517299 0.00 0.00 setup_compiled_invocation 0.08 77.33 0.06 1970075 0.00 0.00 assign_variable Best regards, Przemek
_______________________________________________ MIT-Scheme-devel mailing list MIT-Scheme-devel@gnu.org https://lists.gnu.org/mailman/listinfo/mit-scheme-devel