niklas-heer / speed-comparison

A repo which compares the speed of different programming languages.
https://niklas-heer.github.io/speed-comparison
MIT License
475 stars 76 forks source link

Proper Julia code is much faster than this. Embed in a function. #8

Closed skanskan closed 1 year ago

skanskan commented 4 years ago

In Julia you need to insert the code within a function. Doing so makes the code much faster. And you shouldn't have to include the first time execution time.

This code takes only 1.2ms in my computer, properly benchmarked with the package Benchmarktools.

function f() 
    rounds = parse(Int64,strip(read("rounds.txt", String)))    
    x = 1.0
    pi = 1.0

    for i in 2:(rounds + 2)
        x *= -1
        pi += x / (2 * i - 1)
    end

    pi *= 4
    print(pi)
end

(I have updated the read function to make it compatible with Julia 1.3. Other packages are faster reading files)

It's not fair that you predeclare types in other languages benchmarks, such as C, and not in Julia. You could also use @fastmath, @inbounds, @simd, and in version 1.3 you can easily create a multithreaded version (many other languages cannot do it).

niklas-heer commented 4 years ago

@skanskan thank you for taking the time to write this! As mentioned in my disclaimer I'm no expert in all of these languages and Julia is one of the languages I only picked up for this project. Sorry if you feel that Julia is misrepresented.

I gladly accept pull-requests but currently I don't actively work on the project anymore.

ggorlen commented 2 years ago

Putting the code into a function should be done in CPython as well, and possibly all languages. See Why does Python code run faster in a function?.

niklas-heer commented 1 year ago

This should be better now with #13 merged. At least for Julia.

niklas-heer commented 1 year ago

We have new results and now Julia is faster than Python. (at least CPython) Thus closing this issue for now.

plot