From 7ade2a55a25350a62bd075a6144282449359c8ed Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 8 Sep 2010 17:45:29 -0400 Subject: Add some dimension benchmarks. --- .gitignore | 1 + bench/Makefile.am | 3 +- bench/dimension/Makefile.am | 35 +++++++++++++ bench/dimension/bench.pov | 118 ++++++++++++++++++++++++++++++++++++++++++++ bench/dimension/parse.sh | 59 ++++++++++++++++++++++ bench/dimension/render.sh | 30 +++++++++++ bench/dimension/tokenize.sh | 24 +++++++++ configure.ac | 1 + 8 files changed, 270 insertions(+), 1 deletion(-) create mode 100644 bench/dimension/Makefile.am create mode 100644 bench/dimension/bench.pov create mode 100755 bench/dimension/parse.sh create mode 100755 bench/dimension/render.sh create mode 100755 bench/dimension/tokenize.sh diff --git a/.gitignore b/.gitignore index ec984a3..7acf53d 100644 --- a/.gitignore +++ b/.gitignore @@ -58,6 +58,7 @@ Makefile.in # Files created by `make bench' /bench/*/bench-* +/bench/*/*.png # Files and folders created by libtool .libs/ diff --git a/bench/Makefile.am b/bench/Makefile.am index a4c15d3..71d47aa 100644 --- a/bench/Makefile.am +++ b/bench/Makefile.am @@ -17,9 +17,10 @@ ## along with this program. If not, see . ## ########################################################################### -SUBDIRS = libdimension +SUBDIRS = libdimension dimension bench: all-recursive cd libdimension && $(MAKE) $(AM_MAKEFLAGS) bench + cd dimension && $(MAKE) $(AM_MAKEFLAGS) bench .PHONY: bench diff --git a/bench/dimension/Makefile.am b/bench/dimension/Makefile.am new file mode 100644 index 0000000..908124d --- /dev/null +++ b/bench/dimension/Makefile.am @@ -0,0 +1,35 @@ +########################################################################### +## Copyright (C) 2009-2010 Tavian Barnes ## +## ## +## This file is part of The Dimension Build Suite. ## +## ## +## The Dimension Build Suite is free software; you can redistribute it ## +## and/or modify it under the terms of the GNU General Public License as ## +## published by the Free Software Foundation; either version 3 of the ## +## License, or (at your option) any later version. ## +## ## +## The Dimension Build Suite is distributed in the hope that it will be ## +## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## +## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## +## General Public License for more details. ## +## ## +## You should have received a copy of the GNU General Public License ## +## along with this program. If not, see . ## +########################################################################### + +ENVIRONMENT = top_builddir=$(top_builddir) + +bench: tokenize.sh parse.sh render.sh + $(ENVIRONMENT) ./tokenize.sh + $(ENVIRONMENT) ./parse.sh + $(ENVIRONMENT) ./render.sh + +.sh: + cp $(srcdir)/$@ . + +clean-local: + rm -f *.png + +EXTRA_DIST = bench.pov + +.PHONY: bench diff --git a/bench/dimension/bench.pov b/bench/dimension/bench.pov new file mode 100644 index 0000000..1763b7e --- /dev/null +++ b/bench/dimension/bench.pov @@ -0,0 +1,118 @@ +/************************************************************************* + * Copyright (C) 2009-2010 Tavian Barnes * + * * + * This file is part of The Dimension Benchmark Suite. * + * * + * The Dimension Benchmark Suite is free software; you can redistribute * + * it and/or modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 3 of the * + * License, or (at your option) any later version. * + * * + * The Dimension Benchmark Suite is distributed in the hope that it will * + * be useful, but WITHOUT ANY WARRANTY; without even the implied * + * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * + * the GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *************************************************************************/ + +camera { + location <3.0, 6.0, -11.0> + right x*image_width/image_height + look_at 0 +} + +background { + color rgb 1 +} + +// inside center sphere +light_source { + 0, + color rgb 1 +} + +light_source { + 2*y, + color rgb 1 +} + +/* plane { + y, + -1 + // *** hollow on + pigment { + rgb <0.73, 0.90, 0.97> + } + finish { + diffuse 0.35 + ambient .5 + } +} */ + +#macro sph(center) + sphere { + center, + 1 + texture { + // *** crackle + scale 0.5 + + /* *** texture_map { + [ 0.03 + pigment { + color rgb 1 + } + finish { + ambient 1 + } + normal { + facets size 0.1 + } + ] + [ 0.04 + pigment { + color rgbf <1, 1, 1, 0.9> + } + finish { + reflection { 0.2 } + specular 0.1 + roughness 0.02 + conserve_energy + } + normal { + facets size 0.1 + } + ] + } *** */ + } + interior { + ior 1.3 + } + } +#end + +union { + #declare Size = 4; + #declare I = -Size; + #while (I <= Size) + #declare J = -Size; + + #while (J <= Size) + #declare K = -Size; + + #while (K <= Size) + object { + sph(<2.5*I, 2.5*K, 2.5*J>) + } + + #declare K = K + 1; + #end + + #declare J = J + 1; + #end + + #declare I = I + 1; + #end +} diff --git a/bench/dimension/parse.sh b/bench/dimension/parse.sh new file mode 100755 index 0000000..a35872d --- /dev/null +++ b/bench/dimension/parse.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +######################################################################### +# Copyright (C) 2009-2010 Tavian Barnes # +# # +# This file is part of The Dimension Benchmark Suite. # +# # +# The Dimension Benchmark Suite is free software; you can redistribute # +# it and/or modify it under the terms of the GNU General Public License # +# as published by the Free Software Foundation; either version 3 of the # +# License, or (at your option) any later version. # +# # +# The Dimension Benchmark Suite is distributed in the hope that it will # +# be useful, but WITHOUT ANY WARRANTY; without even the implied # +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # +# the GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +######################################################################### + +for i in {1..10000}; do + echo ' +difference { + box { + <-1, -1, -1>, <1, 1, 1> + + rotate 45*x + + texture { + pigment { + color rgbft <0, 0, 1, 0.25, 0.5> + } + finish { + reflection { 0.5 } + } + } + + interior { + ior 1.1 + } + } + + sphere { + <0, 0, 0>, 1.25 + + texture { + pigment { + color rgb <0, 1, 0> + } + finish { + phong 0.2 + phong_size 40.0 + } + } + } +} +' +done | (time ${top_builddir}/dimension/dimension --parse /dev/stdin >/dev/null) diff --git a/bench/dimension/render.sh b/bench/dimension/render.sh new file mode 100755 index 0000000..01a9950 --- /dev/null +++ b/bench/dimension/render.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +######################################################################### +# Copyright (C) 2009-2010 Tavian Barnes # +# # +# This file is part of The Dimension Benchmark Suite. # +# # +# The Dimension Benchmark Suite is free software; you can redistribute # +# it and/or modify it under the terms of the GNU General Public License # +# as published by the Free Software Foundation; either version 3 of the # +# License, or (at your option) any later version. # +# # +# The Dimension Benchmark Suite is distributed in the hope that it will # +# be useful, but WITHOUT ANY WARRANTY; without even the implied # +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # +# the GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +######################################################################### + +echo "Single POV-Ray" +time povray -w1920 -h1080 +Q1 -UL -UV -D bench.pov >/dev/null 2>&1 +echo -e "\nSingle Dimension" +time ${top_builddir}/dimension/dimension -w1920 -h1080 --quality=1 --threads=1 bench.pov >/dev/null + +echo -e "\nMulti POV-Ray" +time ${top_builddir}/../povray-3.7.0.beta*/unix/povray -w1920 -h1080 +Q1 -UL -UV -D bench.pov >/dev/null 2>&1 +echo -e "\nMulti Dimension" +time ${top_builddir}/dimension/dimension -w1920 -h1080 --quality=1 bench.pov >/dev/null diff --git a/bench/dimension/tokenize.sh b/bench/dimension/tokenize.sh new file mode 100755 index 0000000..01c15c0 --- /dev/null +++ b/bench/dimension/tokenize.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +######################################################################### +# Copyright (C) 2009-2010 Tavian Barnes # +# # +# This file is part of The Dimension Benchmark Suite. # +# # +# The Dimension Benchmark Suite is free software; you can redistribute # +# it and/or modify it under the terms of the GNU General Public License # +# as published by the Free Software Foundation; either version 3 of the # +# License, or (at your option) any later version. # +# # +# The Dimension Benchmark Suite is distributed in the hope that it will # +# be useful, but WITHOUT ANY WARRANTY; without even the implied # +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See # +# the GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +######################################################################### + +for i in {1..10000}; do + echo '{}()[]+-*/,;?:&.|=<>!<= >= != "This is a string with escape sequences: \a\b\f\n\r\t\u2123\v\\\"" 1 123456789 01234567 0x123456789 -0x01 .1 0.1 1.0 0.123456789 -0.123456789 <1, 2.2, -3.03> Undefined' +done | (time ${top_builddir}/dimension/dimension --tokenize /dev/stdin >/dev/null) diff --git a/configure.ac b/configure.ac index 9ce9b2a..e1f127f 100644 --- a/configure.ac +++ b/configure.ac @@ -135,5 +135,6 @@ AC_CONFIG_FILES([Makefile tests/dimension/Makefile bench/Makefile bench/libdimension/Makefile + bench/dimension/Makefile doc/Makefile]) AC_OUTPUT -- cgit v1.2.3