Looks like all but about 2x of the overhead is in the dict-update!
contract, which is this:
(->i ([d (dict-implements/c 'dict-set!)]
[k (d) (dict-key-contract d)]
[update (d) (-> (dict-value-contract d) (dict-value-contract d))])
([default (d) (or/c (dict-value-contract d) (->
(dict-value-contract d)))]) ;; use if/c
[_r void?])
Looks like some improvements (probably 7056cd5f2) since 6.3 have
shaved 10% of the time off. Not enough, I know.
->i doesn't participate in a relevant contract-system optimization
that -> and ->* do, but it could. That would improve things by about
2x I guess.
Robby
Robby
> --
> You received this message because you are subscribed to the Google Groups "Racket Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
racket-dev+...@googlegroups.com.
> To post to this group, send email to
racke...@googlegroups.com.
> To view this discussion on the web visit
https://groups.google.com/d/msgid/racket-dev/62F7A4E7-4AA2-4F73-9686-C84F2FF52CF7%40ccs.neu.edu.
> For more options, visit
https://groups.google.com/d/optout.