/* Prolog standard benchmark in Picat. Inspiration from http://www.jekejeke.ch/idatab/doclet/prod/en/docs/05_run/15_stdy/06_bench/package.html http://www.jekejeke.ch/idatab/doclet/prod/en/docs/05_run/15_stdy/06_bench/08_harness/01_common/01_common.p.html See the following Picat programs: http://www.hakank.org/picat/calc_bench.pi http://www.hakank.org/picat/crypt_bench.pi http://www.hakank.org/picat/deriv_bench.pi http://www.hakank.org/picat/mtak_bench.pi http://www.hakank.org/picat/nrev_bench.pi http://www.hakank.org/picat/perfect_bench.pi http://www.hakank.org/picat/qsort_bench.pi http://www.hakank.org/picat/queens_bench.pi http://www.hakank.org/picat/query_bench.pi http://www.hakank.org/picat/tic_tac_bench.pi This Picat model was created by Hakan Kjellerstrand, hakank@gmail.com See also my Picat page: http://www.hakank.org/picat/ */ % import util. % import cp. main => time(bench). go => bench. go2 => bench. bench => % The times are from % http://www.jekejeke.ch/idatab/doclet/prod/en/docs/05_run/15_stdy/06_bench/08_harness/01_common/01_common.p.html Programs = [ ["dummy_bench.pi",3_001], ["calc_bench.pi",20_001], ["crypt_bench.pi",301], ["deriv_bench.pi",30_001], ["mtak_bench.pi",31], ["nrev_bench.pi",6_001], ["perfect_bench.pi",16], ["poly_bench.pi",61], ["qsort_bench.pi",6_001], ["queens_bench.pi",16], ["query_bench.pi",3_001], ["tic_tac_bench.pi",11] ], Total = 0, foreach([Program, Runs] in Programs) statistics(runtime,_), bench_program(Program,Runs), statistics(runtime,[_,Time]), printf("\ntime: %dms\n", Time), Total := Total + Time end, printf("\nTotal: %5.5fs (%dms)\n", Total/1000.0, Total), nl. bench_program(Program, Runs) => println([running, Program, runs=Runs]), if Runs > 0 then cl(Program), foreach(_I in 1..Runs) % call(go) % with output call(go2) end end.