Add lua + change cpp, js, rust and php, python, go to 30 iterations

master
Vitaliy Filippov 2019-12-29 22:39:26 +03:00
parent 5a17b22d53
commit bdf922b5c8
7 changed files with 61 additions and 30 deletions

View File

@ -61,10 +61,7 @@ void get_primes7(int n, vector<int> &res) {
}
int main() {
std::time_t startTime = std::time(NULL);
std::time_t periodTime = (std::time_t) atoi(std::getenv("RUN_TIME"));
while ((std::time(NULL) - startTime) < periodTime) {
for (int i = 0; i < 30; i++) {
vector<int> res;
get_primes7(10000000, res);
printf("Found %d prime numbers.\n", (int)res.size());

View File

@ -3,8 +3,6 @@ package main
import (
"fmt"
"math"
"os"
"time"
)
func getPrimes7(n int) []int {
@ -49,12 +47,8 @@ func getPrimes7(n int) []int {
}
func main() {
var startTime = time.Now()
var periodTime, _ = time.ParseDuration(os.Getenv("RUN_TIME") + "s")
var res []int
for time.Since(startTime) < periodTime {
for i := 0; i < 30; i++ {
res = getPrimes7(10000000)
fmt.Printf("Found %d prime numbers.\n", len(res))
}

View File

@ -41,7 +41,7 @@ function get_primes7(n) {
var startTime = Date.now();
var periodTime = parseInt(process.env.RUN_TIME, 10) * 1000
while ((Date.now() - startTime) < periodTime) {
for (var i = 0; i < 30; i++) {
var res = get_primes7(10000000);
console.log("Found " + res.length + " prime numbers.");
}

45
primes.lua Normal file
View File

@ -0,0 +1,45 @@
function get_primes7(n)
if n < 2 then return {} end
if n == 2 then return {2} end
local s = {}
for i = 3, n, 2 do
s[#s+1] = i
end
local mroot = math.floor(math.sqrt(n))
local half = #s
local i = 0
local m = 3
while m <= mroot do
if s[i+1] and s[i+1] ~= 0 then
local j = math.floor((m*m-3)/2) -- int div
s[j+1] = 0
while j < half do
s[j+1] = 0
j = j + m
end
end
i = i + 1
m = 2*i + 3
end
local res = {}
res[#res+1] = 2
for x = 1, #s do
if s[x] ~= 0 then
res[#res+1] = s[x]
end
end
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.")
end

View File

@ -36,7 +36,7 @@ $periodTime = getenv('RUN_TIME');
$res = array();
while ((time() - $startTime) < $periodTime) {
for ($i = 0; $i < 30; $i++) {
$res = get_primes7(10000000);
print "Found ".count($res)." prime numbers.\n";
}

View File

@ -2,7 +2,6 @@ import os
import sys
import time
def get_primes7(n):
"""
standard optimized sieve algorithm to get a list of prime numbers
@ -33,9 +32,6 @@ def get_primes7(n):
m = 2 * i + 3
return [2] + [x for x in s if x]
start_time = int(time.time())
period_time = int(os.environ['RUN_TIME'])
while (int(time.time()) - start_time) < period_time:
for i in range(0, 30):
res = get_primes7(10000000)
print("Found {} prime numbers.".format(len(res)))

View File

@ -43,20 +43,19 @@ 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) => panic!("RUN_TIME environment variable error: {}", err),
// };
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();
while start.elapsed() < run_time {
let primes = get_primes7(PRIMES_COUNT);
for x in 0..29 {
let primes = get_primes7(PRIMES_COUNT);
println!("Found {} prime numbers.", primes.len());
}
}