This commit is contained in:
nora 2021-06-06 20:33:28 +02:00
parent bd77a7dfff
commit 44de39a2a5
6 changed files with 101 additions and 1 deletions

View file

@ -5,4 +5,5 @@ Printing time is not included.
| Language | Time |
| ---------| -------|
| Java | 1836ms |
| Java | 1836ms |
| Javascript | 1778.2ms |

View file

@ -0,0 +1,41 @@
const times = [];
for (let i = 0; i < 10; i++) {
console.log(`staring ${i} run`)
const startTime = Date.now();
primes(10_000_000)
const totalTime = Date.now() - startTime;
times.push(totalTime);
}
const average = times.reduce((a, b) => a + b, 0) / times.length;
console.log(`Average time was ${average}ms`)
function primes(max) {
const primesList = [];
primesList.push(2);
for (let i = 3; i < max; i++) { //go through all numbers
let isPrime = true;
for (let j = 0; j < primesList.length; j++) { //test each number
let prime = primesList[j];
if (prime > Math.sqrt(i)) {
break;
}
if (i % prime === 0) { //i = test number, j = some known prime
isPrime = false;
break;
}
}
if (isPrime) {
primesList.push(i);
}
}
return primesList;
}

5
primes/rust/Cargo.lock generated Normal file
View file

@ -0,0 +1,5 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "rust-primes"
version = "0.1.0"

9
primes/rust/Cargo.toml Normal file
View file

@ -0,0 +1,9 @@
[package]
name = "rust-primes"
version = "0.1.0"
authors = ["Nilstrieb <nilstrieb@gmail.com>"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

43
primes/rust/src/main.rs Normal file
View file

@ -0,0 +1,43 @@
use std::time::{SystemTime};
fn main() {
let mut times = Vec::new();
for i in 0..10 {
println!("Starting run {}", i);
let start = SystemTime::now();
let _ = primes(10_000_000);
let time = start.elapsed().unwrap().as_millis();
times.push(time);
}
let average = times.iter().sum::<u128>() / times.len() as u128;
println!("Took {}ms on average", average);
}
fn primes(max: usize) -> Vec<usize> {
let mut primes_list = Vec::new();
primes_list.push(2);
for i in 3..max { //go through all numbers
let mut is_prime = true;
for prime in &primes_list { //test each number
if *prime > (i as f64).sqrt() as usize {
break;
}
if i % prime == 0 { //i = test number, j = some known prime
is_prime = false;
break;
}
}
if is_prime {
primes_list.push(i);
}
}
return primes_list;
}