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

Reply via email to