summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--bench/Makefile.am3
-rw-r--r--bench/dimension/Makefile.am35
-rw-r--r--bench/dimension/bench.pov118
-rwxr-xr-xbench/dimension/parse.sh59
-rwxr-xr-xbench/dimension/render.sh30
-rwxr-xr-xbench/dimension/tokenize.sh24
-rw-r--r--configure.ac1
8 files changed, 270 insertions, 1 deletions
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 <http://www.gnu.org/licenses/>. ##
###########################################################################
-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 <tavianator@gmail.com> ##
+## ##
+## 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 <http://www.gnu.org/licenses/>. ##
+###########################################################################
+
+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 <tavianator@gmail.com> *
+ * *
+ * 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 <http://www.gnu.org/licenses/>. *
+ *************************************************************************/
+
+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 <tavianator@gmail.com> #
+# #
+# 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 <http://www.gnu.org/licenses/>. #
+#########################################################################
+
+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 <tavianator@gmail.com> #
+# #
+# 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 <http://www.gnu.org/licenses/>. #
+#########################################################################
+
+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 <tavianator@gmail.com> #
+# #
+# 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 <http://www.gnu.org/licenses/>. #
+#########################################################################
+
+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