updated python to python 3; added clang c compiler; added Dart; added run params to results.txt

This commit is contained in:
Dan Ballard 2023-05-02 18:23:36 -05:00
parent 83a6f8573f
commit 29aa468cf4
5 changed files with 59 additions and 18 deletions

View File

@ -3,4 +3,4 @@ default:
./autoTest.pl
clean:
rm -f *.txt primesc primescpp primesaltc primes.class primespas primes*.exe primes.o primesobjc primes.ali primesada primesfor primese primes.h primes1.c primes1.o primes.id primes.make primescbl link.res ppas.sh primes.beam primesocaml primesasm primes.cmi primes.cmx luac.out primeshs primes_clisp.fas primes.lib Main.hi primes_clisp.lib primes_clisp.o primes.hi primescsieve gst.im primesalt2c primesalt3c primesgo primesrs
rm -f *.txt primesgcc primesclang primescpp primesaltc primes.class primespas primes*.exe primes.o primesobjc primes.ali primesada primesfor primese primes.h primes1.c primes1.o primes.id primes.make primescbl link.res ppas.sh primes.beam primesocaml primesasm primes.cmi primes.cmx luac.out primeshs primes_clisp.fas primes.lib Main.hi primes_clisp.lib primes_clisp.o primes.hi primescsieve gst.im primesalt2c primesalt3c primesgo primesrs

4
README
View File

@ -5,6 +5,10 @@ Mindstab.net Multi language prime number project:
Prime number finders in ~40 languages
and a test driver
2023: added dart. updateed python to python3. Added run params to results.txt
2020: added rust. Tweak ruby support for newer interpreter
2014: added go
2013: Cleanedup and small additions

View File

@ -12,10 +12,10 @@ $os = `uname`;
$debug=0;
@langs = ("c",
@langs = ("cgcc", "cclang",
# Uncomment for alternat C algorithms
# "c2", "ca", "ca2", "ca3",
"objc", "cpp", "asm", "for", "pas", "go", "rs", "ada", "hs", "e", "cbl", "oml", "java", "scala", "cs", "vb", "erl", "awk", "pl", "php", "py", "tcl", "rb", "cl", "scm", "st", "sml", "4th", "pro", "m3", "pike", "lua", "rexx", "r", "fe", "5c", "m4", "sh");
"objc", "cpp", "asm", "for", "pas", "go", "rs", "ada", "hs", "e", "cbl", "oml", "java", "scala", "cs", "vb", "erl", "awk", "pl", "php", "py", "tcl", "rb", "dart", "cl", "scm", "st", "sml", "4th", "pro", "m3", "pike", "lua", "rexx", "r", "fe", "5c", "m4", "sh");
$llen = $#langs+1;
@ -25,19 +25,25 @@ chomp($itr);
print "\n";
if($itr < 1) { $itr = 3; }
print "Maximun number to search to [100000]: ";
print "Maximun number to search to [1000000]: ";
$max = <stdin>;
chomp($max);
print "\n";
if($max < 1) { $max = 100000; }
if($max < 1) { $max = 1000000; }
#sources
$data{'c'}{'name'} = "C";
$data{'c'}{'src'}= "primes.c";
$data{'c'}{'prog'} = "primesc";
$data{'c'}{'compiler0'} = "gcc";
$data{'c'}{'cflags0'} = "-lm -O3 -o " . $data{'c'}{'prog'};
$data{'cgcc'}{'name'} = "C (gcc)";
$data{'cgcc'}{'src'}= "primes.c";
$data{'cgcc'}{'prog'} = "primesgcc";
$data{'cgcc'}{'compiler0'} = "gcc";
$data{'cgcc'}{'cflags0'} = "-lm -O3 -o " . $data{'cgcc'}{'prog'};
$data{'cclang'}{'name'} = "C (clang)";
$data{'cclang'}{'src'}= "primes.c";
$data{'cclang'}{'prog'} = "primesclang";
$data{'cclang'}{'compiler0'} = "clang";
$data{'cclang'}{'cflags0'} = "-lm -O3 -o " . $data{'cclang'}{'prog'};
$data{'c2'}{'name'} = "C Sieve";
$data{'c2'}{'src'}= "primes.sieve.c";
@ -230,6 +236,10 @@ $data{'pl'}{'name'} = "PERL";
$data{'pl'}{'prog'} = "primes.perl.pl";
$data{'pl'}{'interp0'} = "perl";
$data{'dart'}{'name'} = "Dart";
$data{'dart'}{'prog'} = "primes.dart";
$data{'dart'}{'interp0'} = "dart";
$data{'5c'}{'name'} = "Nickle";
$data{'5c'}{'prog'} = "primes.5c";
$data{'5c'}{'interp0'} = "nickle";
@ -291,7 +301,7 @@ $data{'hs'}{'compiler1'} = "interpB";
$data{'py'}{'name'} = "Python";
$data{'py'}{'prog'} = "primes.py";
$data{'py'}{'interp0'} = "python";
$data{'py'}{'interp0'} = "python3";
$data{'php'}{'name'} = "PHP";
$data{'php'}{'prog'} = "primes.php";
@ -459,7 +469,10 @@ open(results, ">".$RESULTS) || die("Cannot open $RESULTS\n");
print results "Prime number benchmarks\n";
$mach = `uname -a`;
print results "Benchmark machine: " . $mach."\n";
print results "Benchmark machine: " . $mach;
print results "Iterations: " . $itr . "\n";
print results "Max number searched to: " . $max . "\n\n";
# TESTS
@ -574,10 +587,10 @@ foreach $l (@langs)
if(length($compiler) < 5) {print results "\t";}
if($data{$l}{"cflagspre$cp"}) { $cmd .= $data{$l}{"cflagspre$cp"};}
$cmd .= "$comp ";
# So gcc stoped compiling if teh linking was done before the soruce file was specified
# So gcc stoped compiling if thh linking was done before the soruce file was specified
# go figure
$gcc_code = 0;
if ($l =~ /^o?b?j?ca?[23]?$/) {
if ($l =~ /^o?b?j?ca?[23]?(gcc)?$/) {
$gcc_code = 1;
}

24
primes.dart Normal file
View File

@ -0,0 +1,24 @@
import 'dart:math';
void main(List<String> args) {
if (args.length < 1) {
print("USAGE: dart primes.dart <MAX>");
return;
}
var max = int.parse(args[0]);
for (var i = 3; i <= max; i += 2) {
var cap = sqrt(i);
var isPrime = true;
for (var j = 3; j <= cap; j += 2) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
print(i);
}
}
}

View File

@ -1,4 +1,4 @@
#!/usr/bin/env python
#!/usr/bin/env python3
# Python version of a Prime Number Finder
# haplo@mindstab.net
@ -7,11 +7,11 @@ import math
try: max = int(sys.argv[1]);
except:
print "primes.py <MAX NUM>"
print("primes.py <MAX NUM>")
sys.exit()
if max < 1:
print "Invalide MAX NUM"
print("Invalide MAX NUM")
sys.exit()
for cnt in range(3, max, 2) :
@ -23,5 +23,5 @@ for cnt in range(3, max, 2) :
break
if isPrime != 0 :
print cnt
print(cnt)