Re: [racket-users] Word Count program/benchmark performance

2021-03-18 Thread Sorawee Porncharoenwase
string-split always uses regex. I wonder if a fast path when the splitter is a regular string will be worth it. On Fri, Mar 19, 2021 at 4:19 AM Pawel Mosakowski wrote: > Hi Bogdan, > > This is a brilliant solution and also completely over my head. It finishes > in ~3.75s on my PC and is faster

Re: [racket-users] Smart contracts in Racket

2021-03-18 Thread Christopher Lemmer Webber
James Platt writes: > On Mar 16, 2021, at 3:24 PM, Christopher Lemmer Webber wrote: > >> But "smart contracts" is a use case, a broad problem domain. What kind >> of smart contracts are you wanting to write? > > I do need to research the topic a bit to make sure that what I want to > do is

Re: [racket-users] Word Count program/benchmark performance

2021-03-18 Thread Pawel Mosakowski
Hi Bogdan, This is a brilliant solution and also completely over my head. It finishes in ~3.75s on my PC and is faster than the Python version which basically delegates all the work to C. I will need to spend some time on understanding it but I am looking forward to learning something new.

Re: [racket-users] Word Count program/benchmark performance

2021-03-18 Thread Pawel Mosakowski
Hi Sam, Thank you for your responses. Your fastest approach runs in quarter of the time (~5 seconds) of my naive implementation which is pretty amazing. I already had a closer look and can see all the improvements like avoiding string-split, using a mutable hash and modifying it in place,

Re: [racket-users] Smart contracts in Racket

2021-03-18 Thread James Platt
On Mar 16, 2021, at 3:24 PM, Christopher Lemmer Webber wrote: > But "smart contracts" is a use case, a broad problem domain. What kind > of smart contracts are you wanting to write? I do need to research the topic a bit to make sure that what I want to do is possible but, according to what I

Re: [racket-users] Word Count program/benchmark performance

2021-03-18 Thread Bogdan Popa
I managed to get it about as fast as Python by making it really imperative and rolling my own hash: https://gist.github.com/Bogdanp/fb39d202037cdaadd55dae3d45737571 Sam Tobin-Hochstadt writes: > Here are several variants of the code: > https://gist.github.com/d6fbe3757c462d5b4d1d9393b72f9ab9 >

Re: [racket-users] Word Count program/benchmark performance

2021-03-18 Thread Sam Tobin-Hochstadt
Here are several variants of the code: https://gist.github.com/d6fbe3757c462d5b4d1d9393b72f9ab9 The enabled version is about the fastest I can get without using `unsafe` (which the rules said not to do). It's possible to optimize a tiny bit more by avoiding sorting, but only a few milliseconds --

Re: [racket-users] Word Count program/benchmark performance

2021-03-18 Thread Sam Tobin-Hochstadt
Here's a somewhat-optimized version of the code: #lang racket/base (require racket/string racket/vector racket/port) (define h (make-hash)) (time (for* ([l (in-lines)] [w (in-list (string-split l))] [w* (in-value (string-downcase w))]) (hash-update! h w* add1 0))) (define v

Re: [racket-users] Word Count program/benchmark performance

2021-03-18 Thread Pawel Mosakowski
Hi David, Yes, the 21 seconds includes the interpreter startup time. I have done a simple test to see how long it takes: $ time racket -e '(displayln "Hello, world")' Hello, world real0m0.479s user0m0.449s sys0m0.030s I have also put my code inside a main function and profiled it:

Re: [racket-users] Word Count program/benchmark performance

2021-03-18 Thread David Storrs
Hi Pawel, I'll take a look at the code later, but did that 21 seconds include startup time for the interpreter? On Thu, Mar 18, 2021, 9:24 AM Pawel Mosakowski wrote: > Hello, > > I am a Racket beginner and I have come across this article: > > >

[racket-users] Word Count program/benchmark performance

2021-03-18 Thread Pawel Mosakowski
Hello, I am a Racket beginner and I have come across this article: https://benhoyt.com/writings/count-words/ This is my attempt at solving the challenge: https://pastebin.com/kL16w5Hc However when I have benchmarked it, it takes ~21 seconds to run compared to the Python and Ruby versions