]> gitweb.factorcode.org Git - factor.git/commitdiff
Check in benchmark.struct vocab
authorDoug Coleman <doug.coleman@gmail.com>
Thu, 10 Jun 2010 20:37:53 +0000 (15:37 -0500)
committerDoug Coleman <doug.coleman@gmail.com>
Thu, 10 Jun 2010 20:37:53 +0000 (15:37 -0500)
extra/benchmark/struct/authors.txt [new file with mode: 0644]
extra/benchmark/struct/struct.factor [new file with mode: 0644]

diff --git a/extra/benchmark/struct/authors.txt b/extra/benchmark/struct/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/extra/benchmark/struct/struct.factor b/extra/benchmark/struct/struct.factor
new file mode 100644 (file)
index 0000000..addc40d
--- /dev/null
@@ -0,0 +1,31 @@
+! Copyright (C) 2010 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.c-types classes.struct kernel memory
+system vm ;
+IN: benchmark.struct
+
+STRUCT: benchmark-data
+    { time ulonglong }
+    { data-room data-heap-room }
+    { code-room mark-sweep-sizes } ;
+
+STRUCT: benchmark-data-pair
+    { start benchmark-data }
+    { stop benchmark-data } ;
+
+: <benchmark-data> ( -- benchmark-data )
+    \ benchmark-data <struct>
+        nano-count >>time
+        code-room >>code-room
+        data-room >>data-room ; inline
+
+: <benchmark-data-pair> ( start stop -- benchmark-data-pair )
+    \ benchmark-data-pair <struct>
+        swap >>stop
+        swap >>start ; inline
+
+: with-benchmarking ( ... quot -- ... benchmark-data-pair )
+    <benchmark-data>
+    [ call ] dip
+    <benchmark-data> <benchmark-data-pair> ; inline
+