mirror of
https://github.com/Noratrieb/benchmarks.git
synced 2026-01-14 10:45:04 +01:00
rust?
This commit is contained in:
parent
bd77a7dfff
commit
44de39a2a5
6 changed files with 101 additions and 1 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -3,3 +3,4 @@
|
||||||
*.iml
|
*.iml
|
||||||
*.class
|
*.class
|
||||||
out
|
out
|
||||||
|
target
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,5 @@ Printing time is not included.
|
||||||
|
|
||||||
| Language | Time |
|
| Language | Time |
|
||||||
| ---------| -------|
|
| ---------| -------|
|
||||||
| Java | 1836ms |
|
| Java | 1836ms |
|
||||||
|
| Javascript | 1778.2ms |
|
||||||
41
primes/javascript/primes.js
Normal file
41
primes/javascript/primes.js
Normal 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
5
primes/rust/Cargo.lock
generated
Normal 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
9
primes/rust/Cargo.toml
Normal 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
43
primes/rust/src/main.rs
Normal 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;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue