Actually, it cuts about 20-25ms off of a single import. Down from 185ms to 165ms for me. 50ms off my startup time of my app on average, since i basically stack the import twice and sync on the place being ready.
Might be worth including and seeing if there’s anything else that can be shaved off. Nate > On Nov 24, 2020, at 12:09 PM, Nathaniel W Griswold <[email protected]> > wrote: > > I checked into it a bit. > > racket/fixnum, racket/flonum, and racket/vector are needed by > “private/th-place.rkt”, which is required by racket/place. Not sure why > DrRacket is saying that it’s not needed. > > racket/runtime-path does not appear to be needed. > > I tried removing racket/runtime-path and racket/match but didn’t see any > performance gains. It appears the delay is elsewhere. > > Nate > >> On Nov 24, 2020, at 9:52 AM, Robby Findler <[email protected] >> <mailto:[email protected]>> wrote: >> >> DrRacket thinks that there are no references to a number of the requires in >> racket/place, including racket/fixnum, racket/flonum, racket/vector, and >> racket/runtime-path. Not sure if that's an error on DrRacket's part (and I >> don't see why those would be needed for their effects). >> >> Also, the only use of racket/match seems to be this, which seems simple to >> rewrite out. >> >> (match name >> [(? symbol?) `(submod (quote ,name) ,submod-name)] >> [(? path?) `(submod ,name ,submod-name)] >> [`(,p ,s ...) `(submod ,(if (symbol? p) `(quote ,p) p) ,@s >> ,submod-name)]) >> >> Robby >> >> >> On Tue, Nov 24, 2020 at 8:58 AM Nate Griswold <[email protected] >> <mailto:[email protected]>> wrote: >> Oh, interesting. So compilation breaks the submodule out from the modules if >> possible? >> >> So anyway, it sounds like breaking my modules out into separate files will >> improve performance in most cases. >> >> Unfortunately, i need racket/place in the module that is my startup >> bottleneck. If i modify the previous program to require racket/place and >> compile, it takes around 180ms. >> >> This is about what i can expect for a module that requires racket/place, >> then? >> >> Nate >> >> >> On Tue, Nov 24, 2020 at 8:48 AM Matthew Flatt <[email protected] >> <mailto:[email protected]>> wrote: >> Just to elaborate a little more: >> >> The difference is because the `test` submodule can be loaded >> independently from the compiled form. Loading the submodule from source >> requires loading the enclosing module, too (which depends on >> `racket/place` and more). >> >> At Tue, 24 Nov 2020 08:46:12 -0600, Nate Griswold wrote: >> > Awesome, thanks! >> > >> > Nate >> > >> > >> > On Tue, Nov 24, 2020 at 8:44 AM Sam Tobin-Hochstadt <[email protected] >> > <mailto:[email protected]>> >> > wrote: >> > >> > > Almost certainly the problem is expansion time. If I run that program >> > > on my machine, it takes about 200 ms. But if I compile the file to zo >> > > first with `raco make`, then it takes about 40 ms, basically identical >> > > to `racket/base`. >> > > >> > > Sam >> > > >> > > On Tue, Nov 24, 2020 at 9:39 AM Nate Griswold <[email protected] >> > > <mailto:[email protected]>> >> > > wrote: >> > > > >> > > > Oops, i am having some issues with not getting to the list from my >> > > > other >> > > email address. Here is a reply i sent for the record. >> > > > >> > > > --- >> > > > >> > > > Thank you, Matthew. >> > > > >> > > > The following code takes around 250ms on my machine. Any idea why? I >> > > > was >> > > expecting it to be fast since the module is based on racket/base. >> > > > >> > > > #lang racket/base >> > > > >> > > > (require syntax/location) >> > > > (require racket/place) >> > > > >> > > > >> > > > >> > > > (module test racket/base >> > > > (provide place-main) >> > > > racket >> > > > (define (place-main pch) >> > > > (void))) >> > > > >> > > > (time (place-wait (dynamic-place (quote-module-path test) >> > > > 'place-main))) >> > > > >> > > > Nate >> > > > >> > > > >> > > > On Tue, Nov 24, 2020 at 8:35 AM Nathaniel W Griswold >> > > <[email protected] <mailto:[email protected]>> wrote: >> > > >> >> > > >> Thank you, Matthew. >> > > >> >> > > >> The following code takes around 250ms on my machine. Any idea why? I >> > > was expecting it to be fast since the module is based on racket/base. >> > > >> >> > > >> #lang racket/base >> > > >> >> > > >> (require syntax/location) >> > > >> (require racket/place) >> > > >> >> > > >> >> > > >> >> > > >> (module test racket/base >> > > >> (provide place-main) >> > > >> racket >> > > >> (define (place-main pch) >> > > >> (void))) >> > > >> >> > > >> (time (place-wait (dynamic-place (quote-module-path test) >> > > >> 'place-main))) >> > > >> >> > > >> Nate >> > > >> >> > > >> On Nov 24, 2020, at 8:16 AM, Matthew Flatt <[email protected] >> > > >> <mailto:[email protected]>> wrote: >> > > >> >> > > >> The bottleneck for place startup is loading modules into the new >> > > >> place, >> > > >> including modules like `racket/base`. >> > > >> >> > > >> For example, >> > > >> >> > > >> (place-wait (dynamic-place 'racket 'void)) >> > > >> >> > > >> takes around 200ms on my machine, while >> > > >> >> > > >> (place-wait (dynamic-place 'racket/base 'void)) >> > > >> >> > > >> takes around 30ms and >> > > >> >> > > >> (place-wait (dynamic-place 'racket/kernel 'void)) >> > > >> >> > > >> takes around 10ms. >> > > >> >> > > >> It sounds like you're already aware that the complexity of the module >> > > >> loaded into a place matters, though. Beyond using a minimal set of >> > > >> modules, I don't have any way to make place startup faster. >> > > >> >> > > >> Matthew >> > > >> >> > > >> At Tue, 24 Nov 2020 05:04:19 -0600, Nate Griswold wrote: >> > > >> >> > > >> Is there any way to make places startup faster? Even if i do an >> > > >> explicit >> > > >> round trip using place-channel-put and place-channel-get on both >> > > >> sides, >> > > it >> > > >> takes on the order of centiseconds for near empty places to start up. >> > > >> >> > > >> My program requires the threads for a couple places to be set up >> > > >> before >> > > it >> > > >> can operate, so this impacts my startup time by quite a bit. >> > > >> >> > > >> I have one place that has a very simple module and one place with a >> > > >> more >> > > >> complicated module. Is there some sequence that i should do things in >> > > for >> > > >> the minimal startup time? It seems nothing i do really helps much. >> > > >> >> > > >> Nate >> > > >> >> > > >> -- >> > > >> You received this message because you are subscribed to the Google >> > > Groups >> > > >> "Racket Users" group. >> > > >> To unsubscribe from this group and stop receiving emails from it, send >> > > an >> > > >> email to [email protected] >> > > >> <mailto:racket-users%[email protected]>. >> > > >> To view this discussion on the web visit >> > > >> >> > > >> > https://groups.google.com/d/msgid/racket-users/CAM-xLPpvfCHHDDpfNmuTWQOyfYfEJ7v >> > >> > <https://groups.google.com/d/msgid/racket-users/CAM-xLPpvfCHHDDpfNmuTWQOyfYfEJ7v> >> > > >> m1c_dS7nj3FxaEFVm2Q%40mail.gmail.com <http://40mail.gmail.com/>. >> > > >> >> > > >> >> > > > -- >> > > > You received this message because you are subscribed to the Google >> > > Groups "Racket Users" group. >> > > > To unsubscribe from this group and stop receiving emails from it, send >> > > an email to [email protected] >> > > <mailto:racket-users%[email protected]>. >> > > > To view this discussion on the web visit >> > > >> > https://groups.google.com/d/msgid/racket-users/CAM-xLPqtJrem4j%3DUi3fbrduoahsXC >> > >> > <https://groups.google.com/d/msgid/racket-users/CAM-xLPqtJrem4j%3DUi3fbrduoahsXC> >> > NNA2JPuB0Tt9dissiu5KA%40mail.gmail.com <http://40mail.gmail.com/> >> > > . >> > > >> > >> > -- >> > You received this message because you are subscribed to the Google Groups >> > "Racket Users" group. >> > To unsubscribe from this group and stop receiving emails from it, send an >> > email to [email protected] >> > <mailto:racket-users%[email protected]>. >> > To view this discussion on the web visit >> > https://groups.google.com/d/msgid/racket-users/CAM-xLPqVgEBvrRzjU7%3DX_h3Wy_YUH >> > >> > <https://groups.google.com/d/msgid/racket-users/CAM-xLPqVgEBvrRzjU7%3DX_h3Wy_YUH> >> > 11G6CX5%2BKjSct26pi3oEA%40mail.gmail.com <http://40mail.gmail.com/>. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Racket Users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] >> <mailto:[email protected]>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/racket-users/CAM-xLPoLD6N%3Dwep%2Bed5UGduA7mZ-SaYxFJ9VbqM78CppMG3m2w%40mail.gmail.com >> >> <https://groups.google.com/d/msgid/racket-users/CAM-xLPoLD6N%3Dwep%2Bed5UGduA7mZ-SaYxFJ9VbqM78CppMG3m2w%40mail.gmail.com?utm_medium=email&utm_source=footer>. > -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/EA75B83A-2344-4D81-9633-0F6BCD8361BF%40manicmind.earth.

