mirror of
https://github.com/Noratrieb/benchmarks.git
synced 2026-01-14 10:45:04 +01:00
never underestimate a jit
This commit is contained in:
parent
44de39a2a5
commit
a8eacce3c8
4 changed files with 18 additions and 10 deletions
|
|
@ -3,7 +3,10 @@
|
||||||
Find all primes from 0 to 10 000 000.
|
Find all primes from 0 to 10 000 000.
|
||||||
Printing time is not included.
|
Printing time is not included.
|
||||||
|
|
||||||
|
There are probably some issues in the code since this result seems a bit *questionable*
|
||||||
|
|
||||||
| Language | Time |
|
| Language | Time |
|
||||||
| ---------| -------|
|
| ---------| -------|
|
||||||
| Java | 1836ms |
|
| Java | 1836ms |
|
||||||
| Javascript | 1778.2ms |
|
| Javascript | 1778.2ms |
|
||||||
|
| Rust | 1818ms |
|
||||||
|
|
@ -9,6 +9,8 @@ for (let i = 0; i < 10; i++) {
|
||||||
times.push(totalTime);
|
times.push(totalTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.assert(primes(10_000_000).length === 664_579);
|
||||||
|
|
||||||
const average = times.reduce((a, b) => a + b, 0) / times.length;
|
const average = times.reduce((a, b) => a + b, 0) / times.length;
|
||||||
console.log(`Average time was ${average}ms`)
|
console.log(`Average time was ${average}ms`)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,3 +7,9 @@ edition = "2018"
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|
||||||
|
[profile.dev]
|
||||||
|
opt-level = 3
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
opt-level = 3
|
||||||
|
|
@ -3,14 +3,17 @@ use std::time::{SystemTime};
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut times = Vec::new();
|
let mut times = Vec::new();
|
||||||
|
|
||||||
for i in 0..10 {
|
for i in 0..2 {
|
||||||
println!("Starting run {}", i);
|
println!("Starting run {}", i);
|
||||||
let start = SystemTime::now();
|
let start = SystemTime::now();
|
||||||
let _ = primes(10_000_000);
|
let _ = primes(10_000_000);
|
||||||
|
|
||||||
let time = start.elapsed().unwrap().as_millis();
|
let time = start.elapsed().unwrap().as_millis();
|
||||||
times.push(time);
|
times.push(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert_eq!(primes(10_000_000).len(), 664_579);
|
||||||
|
|
||||||
let average = times.iter().sum::<u128>() / times.len() as u128;
|
let average = times.iter().sum::<u128>() / times.len() as u128;
|
||||||
println!("Took {}ms on average", average);
|
println!("Took {}ms on average", average);
|
||||||
}
|
}
|
||||||
|
|
@ -21,22 +24,16 @@ fn primes(max: usize) -> Vec<usize> {
|
||||||
|
|
||||||
primes_list.push(2);
|
primes_list.push(2);
|
||||||
|
|
||||||
|
|
||||||
for i in 3..max { //go through all numbers
|
for i in 3..max { //go through all numbers
|
||||||
let mut is_prime = true;
|
|
||||||
for prime in &primes_list { //test each number
|
for prime in &primes_list { //test each number
|
||||||
if *prime > (i as f64).sqrt() as usize {
|
if *prime > (i as f64).sqrt() as usize {
|
||||||
|
primes_list.push(i);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if i % prime == 0 { //i = test number, j = some known prime
|
if i % prime == 0 { //i = test number, j = some known prime
|
||||||
is_prime = false;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if is_prime {
|
|
||||||
primes_list.push(i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return primes_list;
|
return primes_list;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue