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.

Reply via email to