On Windows at least, "localhost" resolves to two IP addresses (in this 
order): "::1" (IPv6) and "127.0.0.1".  The Racket `tcp-connect` function 
will try the fist one first, and since you probably don't bind your web 
server to the IPv6 address, the connection times out, than `tcp-connect` 
tries the IPv4 one and succeeds.  This is  why using "localhost" is slower 
than using "127.0.0.1".   

I know this because I have been caught by it as well :-)  My solution was 
to learn IpV6 and start my server on IPv6 :-)

 Perhaps curl and Chrome go straight for the IPv4 address.

As a test, try starting your web server on an IPv6 address (::1) and see if 
things improve.

Alex.

On Wednesday, September 16, 2020 at 11:14:29 PM UTC+8 Stephen Foster wrote:

> Thanks everyone.  We resolved the issue over on the http-easy package: 
> https://github.com/Bogdanp/racket-http-easy/issues/6
>
> I'll summarize for the curious:
>
> Turns out it's largely a "my system thing": requests to "localhost" are 
> slow, but 127.0.0.1 are fast.  On Chrome and curl, both were fast, which is 
> why I assumed the slowdown was in some Racket package.  It's more likely a 
> DNS issue.  (I have to use an unfamiliar Windows machine for game 
> development; there's probably something misconfigured about the DNS.)
>
> In any event, my original problem is solved: I can use Racket's packages 
> and send requests to 127.0.0.1, and the spellcasting experience in 
> CodeSpells is super-snappy now.
>
> Thanks again, everyone!  And thanks Bogdan -- both for the help, and for 
> the http-easy package.  :)
>
> On Mon, Sep 14, 2020 at 3:42 PM Sam Phillips <samdph...@gmail.com> wrote:
>
>> Hi Stephen,
>>
>> I ran this small benchmark against a remote web server, and was
>> definitely getting better response using the http-easy module.
>>
>> https://gist.github.com/samdphillips/32763ebd0d938678c2972b1dd8ee5778
>>
>> $ racket -e '(require (submod "http-perf.rkt" curl))'
>> cpu time: 768 real time: 35299 gc time: 0
>>
>> $ racket -e '(require (submod "http-perf.rkt" http-easy))'
>> cpu time: 1810 real time: 17316 gc time: 70
>>
>> On Mon, Sep 14, 2020 at 12:57 PM Stephen Foster <ste...@thoughtstem.com> 
>> wrote:
>> >
>> > Finally circling back to this issue.  I've disabled debugging in 
>> DrRacket and also done a test outside of DrRacket.  It's still slow. :(
>> >
>> > I also tried the newer HTTP client: 
>> https://docs.racket-lang.org/http-easy/index.html.  Like the others, it 
>> is also slow.
>> >
>> > I'll do some more digging.  I'm currently trying to figure out if this 
>> is a "just me" / "just my system" problem.  So... I'd be grateful if anyone 
>> who has written code that sends HTTP requests from Racket could chime in 
>> with: 1) I can confirm that sending HTTP requests from Racket has always 
>> been fast for me, or 2) I too have noticed Racket HTTP requests are slow.
>> >
>> > (Note that by "slow", I mean: takes noticeably longer than curl.)
>> >
>> >
>> >
>> > On Tue, Jul 7, 2020 at 12:21 PM Jon Zeppieri <zepp...@gmail.com> wrote:
>> >>
>> >> Hi Stephen,
>> >>
>> >> Your video shows you running this code in DrRacket with debugging
>> >> enabled. That usually affects performance. Have you made measurements
>> >> when running this code outside of DrRacket?
>> >>
>> >> - Jon
>> >>
>> >>
>> >> On Tue, Jul 7, 2020 at 2:13 PM Stephen Foster <ste...@thoughtstem.com> 
>> wrote:
>> >> >
>> >> > I'm considering using Racket to remake my 3D game CodeSpells.  I'm 
>> using http requests to have Unreal Engine and Racket talk to each other.
>> >> >
>> >> > When I use the http/request library, Racket fires off its GET 
>> request much slower than if it were to do a system call to curl.  (Same is 
>> true if I use simple-http, which makes me think the problem might be a deep 
>> one.)
>> >> >
>> >> > Here's a video to demo the issue.  Notice how, with curl, the 
>> experience is playable, whereas with the Racket function, there's way too 
>> much time between the spell landing and the effect occurring:
>> >> >
>> >> > https://youtu.be/jTqUFVlfBFA
>> >> >
>> >> > Obviously, I'd like to do things in a Rackety way.  But I'm not 
>> above doing things the silly way.  I'd just be grumpy about it.
>> >> >
>> >> > Any ideas?
>> >> >
>> >> >
>> >> >
>> >> > --
>> >> > 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 racket-users...@googlegroups.com.
>> >> > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-users/997693d6-b94a-4f69-85cf-aa475c807b20n%40googlegroups.com
>> .
>> >
>> >
>> >
>> > --
>> >
>> >
>> > Stephen Foster
>> > ThoughtSTEM Co-Founder
>> > 318-792-2035 <(318)%20792-2035>
>> >
>> > --
>> > 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 racket-users...@googlegroups.com.
>> > To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/racket-users/CA%2BzSu2_%2BTKVTe--OZRU_BE_LyofFkA869c-2v%2BRJ76HjDQt4_w%40mail.gmail.com
>> .
>>
>
>
> -- 
>
>
> Stephen Foster
> ThoughtSTEM Co-Founder
> 318-792-2035 <(318)%20792-2035>
>

-- 
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 racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/2bfc3532-6020-4dfd-81f4-80ed00a1ed3fn%40googlegroups.com.

Reply via email to