dannypsnl / sauron

A DrRacket plugin to make it experience like an IDE
https://pkgs.racket-lang.org/package/sauron
Apache License 2.0
48 stars 4 forks source link

refactoring plan about improve the respond ability #223

Open dannypsnl opened 2 months ago

dannypsnl commented 2 months ago

Is your feature request related to a problem? Please describe. The thread by default created with current-thread-custodian, which will slow down the whole DrRacket, particular if I'm working on some large project (not really large in normal scale, but racket level large).

The fundamental problem is https://github.com/dannypsnl/sauron/blob/fb2eaa94ca305371088f93cb8b9828b690de5f86/collect/record-maintainer.rkt#L79, this collect-from is computation intensive operation, move it into a place worker seems reasonable.

Describe the solution you'd like

  1. Make a place module
  2. Create 4 workers via place module, and collect-from will be invoked via worker
  3. When worker complete the job, send a message back
  4. main-thread needs to forward result to correct record-maintainer

Describe alternatives you've considered No idea

Additional context

I found (place-message-allowed? (make-record)) is #f, the reason are fields that involve (make-interval-map).

dannypsnl commented 2 months ago

Now I'm thinking, if interval-map cannot cross the boundary, it seems forward every message to place is more reasonable now……Though that is a big refactoring.

dannypsnl commented 2 months ago

Although interval-map cannot cross the boundary, the content of it can, so if each updation sent back to record-maintainer, will be a relatively simple solution.