Print comparable results

master
Vitaliy Filippov 2020-01-17 21:02:31 +03:00
parent bdf922b5c8
commit 6e6ffd8e4a
7 changed files with 68 additions and 23 deletions

View File

@ -61,11 +61,18 @@ void get_primes7(int n, vector<int> &res) {
}
int main() {
for (int i = 0; i < 30; i++) {
std::time_t startTime = std::time(NULL);
char *periodTimeStr = std::getenv("RUN_TIME");
std::time_t periodTime = (std::time_t)(periodTimeStr ? atoi(periodTimeStr) : 3);
int iterations = 0;
while ((std::time(NULL) - startTime) < periodTime || iterations < 3) {
vector<int> res;
get_primes7(10000000, res);
printf("Found %d prime numbers.\n", (int)res.size());
iterations++;
}
double time = (std::time(NULL) - startTime);
printf("C++: %d iterations in %.02f seconds = %.02f seconds per 30 iterations\n",
iterations, time, time/iterations*30);
return 0;
}

View File

@ -44,13 +44,24 @@ class PrimeNumbersGenerator {
class PrimeNumbersBenchmarkApp {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
long periodTime = Long.parseLong(System.getenv("RUN_TIME"), 10) * 1000;
String periodTimeStr = System.getenv("RUN_TIME");
if (periodTimeStr == null)
periodTimeStr = "5";
long periodTime = Long.parseLong(periodTimeStr, 10) * 1000;
ArrayList<Integer> res;
while ((System.currentTimeMillis() - startTime) < periodTime) {
int iterations = 0;
while ((System.currentTimeMillis() - startTime) < periodTime || iterations < 3) {
res = (new PrimeNumbersGenerator()).get_primes7(10000000);
System.out.format("Found %d prime numbers.\n", res.size());
iterations++;
}
long time = (System.currentTimeMillis() - startTime);
double per30 = time / 1000.0 / iterations * 30;
System.out.println(
"Java: "+iterations+" iterations in "+(Math.round(time/10.0)/100.0)+
" seconds = "+(Math.round(per30*100)/100.0)+" seconds per 30 iterations"
);
}
}

View File

@ -39,9 +39,13 @@ function get_primes7(n) {
}
var startTime = Date.now();
var periodTime = parseInt(process.env.RUN_TIME, 10) * 1000
for (var i = 0; i < 30; i++) {
var periodTime = parseInt(process.env.RUN_TIME || '5', 10) * 1000;
var iterations = 0;
while ((Date.now() - startTime) < periodTime || iterations < 3) {
var res = get_primes7(10000000);
console.log("Found " + res.length + " prime numbers.");
iterations++;
}
var time = Date.now() - startTime;
var per30 = time / 1000 / iterations * 30;
console.log(iterations + " iterations in "+(Math.round(time/10)/100)+" seconds = "+(Math.round(per30*100)/100)+" seconds per 30 iterations");

View File

@ -36,9 +36,6 @@ function get_primes7(n)
return res
end
startTime = os.time(os.date("!*t"))
periodTime = os.getenv('RUN_TIME')
for i = 1, 30 do
local res = get_primes7(10000000)
print("Found " .. #res .. " prime numbers.")

View File

@ -32,11 +32,19 @@ function get_primes7($n) {
}
$startTime = time();
$periodTime = getenv('RUN_TIME');
$periodTime = getenv('RUN_TIME') ?: 5;
$res = array();
for ($i = 0; $i < 30; $i++) {
$iterations = 0;
$start = microtime(true);
while ((microtime(true) - $start) < $periodTime || $iterations < 3) {
$res = get_primes7(10000000);
print "Found ".count($res)." prime numbers.\n";
$iterations++;
}
$time = microtime(true) - $start;
printf(
"PHP: %d iterations in %.02f seconds = %.02f seconds per 30 iterations\n",
$iterations, $time, $time/$iterations*30
);

View File

@ -1,6 +1,7 @@
import os
import sys
import time
import platform
def get_primes7(n):
"""
@ -32,6 +33,17 @@ def get_primes7(n):
m = 2 * i + 3
return [2] + [x for x in s if x]
for i in range(0, 30):
start_time = time.time()
period_time = int(os.environ.get('RUN_TIME', '5'))
iterations = 0
while (time.time() - start_time) < period_time or iterations < 3:
res = get_primes7(10000000)
print("Found {} prime numbers.".format(len(res)))
iterations = iterations + 1
result_time = time.time() - start_time
print("%s %d.%d.%d: %d iterations in %.02f sec = %.02f sec per 30 iterations" % (
platform.python_implementation(), sys.version_info.major, sys.version_info.minor, sys.version_info.micro,
iterations, result_time, result_time/iterations*30))

View File

@ -43,19 +43,25 @@ fn get_primes7(count: u32) -> Vec<u32> {
}
fn main() {
// let run_time_secs = match env::var("RUN_TIME") {
// Ok(v) => match v.parse::<u32>() {
// Ok(i) => i,
// Err(err) => panic!("RUN_TIME environment variable error: {}", err),
// },
// Err(err) => panic!("RUN_TIME environment variable error: {}", err),
// };
let run_time_secs = match env::var("RUN_TIME") {
Ok(v) => match v.parse::<u32>() {
Ok(i) => i,
Err(err) => panic!("RUN_TIME environment variable error: {}", err),
},
Err(_err) => 5,
};
// let run_time = Duration::new(run_time_secs as u64, 0);
// let start = Instant::now();
let run_time = Duration::new(run_time_secs as u64, 0);
let start = Instant::now();
for x in 0..29 {
let mut iterations = 3;
while start.elapsed() < run_time || iterations < 3 {
let primes = get_primes7(PRIMES_COUNT);
println!("Found {} prime numbers.", primes.len());
iterations += 1;
}
let dur = start.elapsed();
let result_time = dur.as_secs() as f64 + (dur.subsec_millis() as f64) / 1000.0;
println!("Rust: {} iterations in {:.2} sec = {:.2} sec per 30 iterations",
iterations, result_time, result_time / (iterations as f64) * 30.0);
}