Great. Let’s include this link in Alex’s write up as an example of a concrete 
comparison. Even if such simple benchmarks don’t reflect daily, end-to-end 
programs, they can help people by dispelling some prejudices. Thanks — Matthias



> On Feb 4, 2019, at 11:56 AM, Gustavo Massaccesi <gust...@oma.org.ar> wrote:
> 
> For some reason, the Racket vs Python performance is a question that arise 
> from time to time in Hacke News (like 2 or 3 times per year). Last time I 
> asked if it was possible to add a direct comparison in The Computer Language 
> Benchmarks Game and the owner/maintainer added that page. The results are in 
> https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/racket-python3.html
>  [Standard disclaimer: The results change from program to program, so take 
> this comparison only as a guide.]
> 
> A short version of the results is that:
> * in 6 of the programs Racket is much faster
> * in 1 of the programs Racket is faster
> * in 2 of the programs there is almost a tie
> * in 1 of the programs Racket is slower
> 
> Some programs in Racket need parallelization, so the results may improve in 
> the future. [I didn't look too carefully at the programs in Python.]
> 
> My unofficial takeaway, not completely backed by the benchmarks, is that
> * For numeric programs Racket is (may be) 5 to 20 times faster than Python
> * For programs with too many stings and hashes, the speed is almost the same.
> 
> 
> 
> Also, there was an old thread about translating the classic Norvig's spelling 
> correction from Python to Racket, without changing the structure of the 
> implementation too much and using idiomatic code.
> https://groups.google.com/forum/#!topic/racket-users/u0Ua1kTUSKw After a few 
> attempts, the final version in Racket was a 30% slower. I didn't follow this 
> too much after the discussion, so I don't know if there is a smaller or 
> bigger difference using the current versions. (Also, I think we never tried 
> to make is fast as possible, with the same algorithms, but changing the 
> implementation as much as it was necessary.)
> 
> Gustavo
> 
> On Sun, Feb 3, 2019 at 7:38 PM Matthias Felleisen <matth...@felleisen.org> 
> wrote:
> 
> Agreed! 
> 
> 
> 
>> On Feb 3, 2019, at 4:43 PM, Robby Findler <ro...@eecs.northwestern.edu> 
>> wrote:
>> 
>> It seems like a great addition to the performance section of the guide. 
>> 
>> Robby 
>> 
>> On Sun, Feb 3, 2019 at 3:35 PM Matthias Felleisen <matth...@felleisen.org> 
>> wrote:
>> 
>> 1. I think this is a great start for a generic introduction to data 
>> structures. Someone should integrate Jens’s short table: 
>> 
>>  
>> https://stackoverflow.com/questions/27584416/in-racket-what-is-the-advantage-of-lists-over-vectors/27589146#27589146
>>  
>> 
>> 
>> 2. I think language-to-language documents serve a different role, but your 
>> document could be cited from there. 
>> 
>> The point of say “From Python to Racket” would be to show how comprehensions 
>> translate or how classes work 1-1. And yes, it would also explain that 
>> Racket calls something a list that does __not___ at all correspond to a 
>> list. 
>> 
>> The corresponding Java write-up would be quite different again. In that 
>> case, we would be dealing with people who might not know more than classes 
>> and methods. But they might actually know proper design and might know that 
>> it calls for recursion (hidden in classes and interfaces). In Racket, that 
>> works even better than in Java. Plus it would need to say something brief 
>> about types. 
>> 
>> And R would be an entirely different story. 
>> 
>> — Matthias
>> 
>> 
>> 
>> 
>> 
>>> On Feb 2, 2019, at 11:37 PM, Alex Harsanyi <alexharsa...@gmail.com> wrote:
>>> 
>>> 
>>> I put together some notes about available data structures in Racket, with 
>>> some performance considerations.  It needs more work, but perhaps it can be 
>>> used as a starting point and it can be added to the Racket wiki, if/when 
>>> others consider it adequate:
>>> 
>>> https://gist.github.com/alex-hhh/3cc5690a7f9c74543dab6c11344e6202
>>> 
>>> I didn't write a "Python to Racket" guide, because I don't really know 
>>> enough about Python to write such a document, and I also think that a more 
>>> generic document is simpler to maintain and can be used by people who come 
>>> from other languages as well.
>>> 
>>> I also tried to keep the document short, the aim being to provide a 
>>> competent programmer who is new to Racket with a 5 minute overview to its 
>>> data structures and some links to the starting points in the documentation. 
>>>  We can add things to it, but I think it is better to keep it short rather 
>>> than comprehensive in this case -- after all, there is the Racket Guide and 
>>> Racket Reference and these documents contain all the details.  Perhaps new 
>>> documents can be added to the wiki, exploring other topics in more detail.
>>> 
>>> I did not mention `ralist` because (1) I have no experience with it, but 
>>> more importantly (2) the package is not part of the Racket distribution and 
>>> has to be installed separately.  I don't it reflects well on Racket if we 
>>> tell people to install a separate package if they want an efficient 
>>> container...  I have no experience with `ralist`, but if it is indeed a 
>>> good data structure and it has a potentially wide usage, it should be 
>>> included in the default Racket installation.
>>> 
>>> Alex.
>>> 
>>> On Sunday, February 3, 2019 at 7:00:10 AM UTC+8, Matthias Felleisen wrote:
>>> 
>>> 
>>> Racket needs *you*. Please. 
>>> 
>>> The proper approach is to have short pages for different language 
>>> immigration groups: Python and R come to mind as obvious examples but I am 
>>> sure there are others. 
>>> 
>>> What I mean is we need help and *you* can help. Let me explain it with the 
>>> Python example: 
>>> 
>>> 1. Set up a page (wiki?) called “From Python to Racket” 
>>> 
>>> 2. Create two sections that are immediately visible from the top: 
>>>          
>>>         — idioms 
>>>         — performance pitfalls 
>>> 
>>> 3. In the specific case of Python, the second subsection needs to start 
>>> with a subsection on 
>>> 
>>>         — Python Lists aren’t Racket Lists 
>>>         — then point to data/ralis and show how to transliterate the 
>>> loop/append example like this 
>>>         — optionally also show the more native Racket idiom 
>>> 
>>> 4. When anyone observers another blog/social media/whatever post on Racket 
>>> is slow because I come from Python, 
>>> 
>>>         (a) point the posters to the page  or 
>>>         (b) if it is a new case, write a section for this example then do 
>>> (a) 
>>> 
>>> 
>>> If you want to help advertise Racket to others, this is an excellent way of 
>>> helping out. 
>>> 
>>> Thanks — Matthias 
>>> 
>>> [[ p.s. For my very first Python program (a couple of days before meeting 
>>> with GvR), I used Python’s append and was annoyed beyond belief. ]] 
>>> 
>>> 
>>> 
>>> -- 
>>> 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.
>>> For more options, visit https://groups.google.com/d/optout.
>> 
>> 
>> -- 
>> 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.
>> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> 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.
> For more options, visit https://groups.google.com/d/optout.
> 
> -- 
> 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.
> For more options, visit https://groups.google.com/d/optout.

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to