Tein yhden Julia-ohjelmointikielellä suoritetun
totient laskennan kahdella koneella, suoritusajoissa oli 184,6 -kertainen nopeusero! Tässä ei nyt vertailla prosessoreja, vaan myös laskentaympäristöjä toisiinsa. Kummassakin koneessa Kubuntu 20.10.
Kone 1: Intel i3-2100 (4 x 3,1 GHz) prosessori 8 GB muistilla ja pyCharm ympäristöllä Julia-pluginilla (versio 0.40), HP 8200. Julia versio 1.4.1 Kubuntun pakettivarastosta.
Kone 1-k: Sama kuin edellä, mutta ohjelma ajettu konsolissa: julia totient.jl.
Kone 1-t: Sama kuin edellä, mutta säikeistettynä. Julia 1.4.1 ei hyväksynyt -t auto -parametria. Ajettu ilman sitä julia totient-threaded.jl.
Kone 2: Intel Core i5-10400F (6 x 2,9 GHz) prosessori 32 GB muistilla ja Juno-ympäristöllä Julia-versio 1.6.0. Julia-sivustolta.
Kone 2-k: Sama kuin edellä, mutta ohjelma ajettu konsolissa: julia totient.jl.
Kone 2-t: Sama kuin edellä, ajettu konsolissa säikeistettynä: julia -t auto totient-threaded.jl.
Kone 1: 1421.575038 seconds (5.80 G allocations: 128.892 GiB, 0.57% gc time). Reilu 23 minuuttia. (Kone ollut ilmeisen solmussa ennen testiä.)
Kone 1-k: 13.153197 seconds (44.12 M allocations: 1.941 GiB, 0.82% gc time).
Kone 1-t: 14.075111 seconds.
Kone 2: 7.721857 seconds (34.12 M allocations: 1.792 GiB, 3.33% gc time).
Kone 2-k: 7.553358 seconds (34.12 M allocations: 1.792 GiB, 0.79% gc time).
Kone 2-t: 1.882751 seconds (35.14 M allocations: 1.851 GiB, 16.19% gc time, 26.17% compilation time).
Ohjelma totient.jl
import Pkg; Pkg.add("Primes")
using Primes
@time for k=1:10000000 totient(k) end
Ohjelma totient-threaded.jl
import Pkg; Pkg.add("Primes")
using Primes
@time Threads.@threads for k = 1:10000000 totient(k) end