I noticed i am using the pl- functions so I replaced th-place.rkt with a stub and saw more time shaved off, this time about 15ms for each racket/place import.
Under what circumstances is th-place used instead of '#%place and needed? Nate > On Nov 24, 2020, at 12:31 PM, Nathaniel W Griswold <[email protected]> > wrote: > > I seem to remember there being some global namespace. Since every reasonable > place will require racket/place, might it be possible to make the > racket/place import a special case and stick it in the global space, to > improve place setup time? It would be nice to be able to only set up > racket/place one time instead of once for each place. > > Nate > >> On Nov 24, 2020, at 12:24 PM, Nathaniel W Griswold <[email protected] >> <mailto:[email protected]>> wrote: >> >> 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] >>> <mailto:[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/7AE1B364-8DE1-435C-8AA2-EBCFE078040D%40manicmind.earth.

