Juliaを試してみた

Python

みなさんお久しぶりです。mk419です。今回は速いと噂のJuliaを試してみたいと思います。

スポンサーリンク

テスト用のコード

最大値(stop)までの素数を出力するプログラムです。なんも最適化してません。

Python

#!/usr/bin/env python3
import sys

def get_prime_numbers(stop: int) -> None:
    prime_numbers: list[int] = []

    for number in range(2, stop + 1):
        for prime_number in prime_numbers:
            if number % prime_number == 0:
                break
        else:
            print(number)
            prime_numbers.append(number)


if __name__ == "__main__":
    get_prime_numbers(int(sys.argv[1]))

Nim

import os
import strutils

proc getPrimeNumbers(stop: int) =
    var
        prime_numbers: seq[int] = @[]
        continueFlag = false

    for number in 2..stop:
        for prime_number in prime_numbers:
            if number mod prime_number == 0:
                continueFlag = true
                break
        
        if continueFlag:
            continueFlag = false
            continue

        echo number
        prime_numbers.add(number)


if isMainModule:
    getPrimeNumbers(commandLineParams()[0].parseInt())

Julia

function get_prime_numbers(stop::Int)
    prime_numbers = []
    continue_flag = false

    for number = 2:stop
        for prime_number in prime_numbers
            if number % prime_number == 0
                continue_flag = true
                break
            end
        end

        if continue_flag
            continue_flag = false
            continue
        end

        println(number)
        push!(prime_numbers, number)
    end
end


if abspath(PROGRAM_FILE) == @__FILE__
    get_prime_numbers(parse(Int, ARGS[1]))
end

計測

最大値PythonNimJulia
100.01s0.00s0.11s
1000.01s0.00s0.11s
10000.01s0.00s0.11s
100000.05s0.01s0.15s
1000001.98s0.47s2.98s
1000000127.65s29.87s407.82s

なんか遅くね?
NimにはまだしもPythonの足元にも及ばないとは・・・

調べてみたところpush!がPythonのappendよりもかなり遅いらしいです。
[]Int[]に変えると良くなるそうです。

再計測

Juliaの名誉にかけて再計測

最大値PythonNimJulia
100.01s0.00s0.10s
1000.01s0.00s0.10s
10000.01s0.00s0.11s
100000.05s0.01s0.11s
1000001.98s0.47s0.36s
1000000127.65s29.87s14.81s

Pythonより、ずっとはやい!!

終わりに

Juliaが想像以上に速かったです。Nimに勝つとは思わなかったので正直驚いています。
Intのありなしでここまで変わるんですね・・・

そういえば共通テストまでもう三ヶ月きりましたね
正直こんなことやってる場合じゃない()

GitHub - JuliaLang/julia: The Julia Programming Language
The Julia Programming Language. Contribute to JuliaLang/julia development by creating an account on GitHub.

コメント

タイトルとURLをコピーしました