Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
N
nofib
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
9
Issues
9
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
1
Merge Requests
1
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Package Registry
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Glasgow Haskell Compiler
nofib
Commits
f8f27b8b
Commit
f8f27b8b
authored
Feb 05, 2013
by
tibbe
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add the binary-trees shootout benchmark
parent
c864e4af
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
115 additions
and
1 deletion
+115
-1
.gitignore
.gitignore
+1
-0
shootout/Makefile
shootout/Makefile
+1
-1
shootout/binary-trees/Main.hs
shootout/binary-trees/Main.hs
+74
-0
shootout/binary-trees/Makefile
shootout/binary-trees/Makefile
+12
-0
shootout/binary-trees/binary-trees.faststdout
shootout/binary-trees/binary-trees.faststdout
+7
-0
shootout/binary-trees/binary-trees.slowstdout
shootout/binary-trees/binary-trees.slowstdout
+11
-0
shootout/binary-trees/binary-trees.stdout
shootout/binary-trees/binary-trees.stdout
+9
-0
No files found.
.gitignore
View file @
f8f27b8b
...
...
@@ -51,6 +51,7 @@ real/scs/scs
real/symalg/symalg
real/veritas/veritas
shootout/binary-trees/binary-trees
shootout/fannkuch-redux/fannkuch-redux
shootout/pidigits/pidigits
shootout/spectral-norm/spectral-norm
...
...
shootout/Makefile
View file @
f8f27b8b
TOP
=
..
include
$(TOP)/mk/boilerplate.mk
SUBDIRS
=
fannkuch-redux pidigits spectral-norm
SUBDIRS
=
binary-trees
fannkuch-redux pidigits spectral-norm
include
$(TOP)/mk/target.mk
shootout/binary-trees/Main.hs
0 → 100644
View file @
f8f27b8b
--
-- The Computer Language Benchmarks Game
-- http://benchmarksgame.alioth.debian.org/
--
-- Contributed by Don Stewart
-- Parallelized by Louis Wasserman
import
System.Environment
import
Control.Monad
import
System.Mem
import
Data.Bits
import
Text.Printf
import
GHC.Conc
--
-- an artificially strict tree.
--
-- normally you would ensure the branches are lazy, but this benchmark
-- requires strict allocation.
--
data
Tree
=
Nil
|
Node
!
Int
!
Tree
!
Tree
minN
=
4
io
s
n
t
=
printf
"%s of depth %d
\t
check: %d
\n
"
s
n
t
main
=
do
n
<-
getArgs
>>=
readIO
.
head
let
maxN
=
max
(
minN
+
2
)
n
stretchN
=
maxN
+
1
-- stretch memory tree
let
c
=
{-# SCC "stretch" #-}
check
(
make
0
stretchN
)
io
"stretch tree"
stretchN
c
-- allocate a long lived tree
let
!
long
=
make
0
maxN
-- allocate, walk, and deallocate many bottom-up binary trees
let
vs
=
depth
minN
maxN
mapM_
(
\
((
m
,
d
,
i
))
->
io
(
show
m
++
"
\t
trees"
)
d
i
)
vs
-- confirm the the long-lived binary tree still exists
io
"long lived tree"
maxN
(
check
long
)
-- generate many trees
depth
::
Int
->
Int
->
[(
Int
,
Int
,
Int
)]
depth
d
m
|
d
<=
m
=
let
s
=
sumT
d
n
0
rest
=
depth
(
d
+
2
)
m
in
s
`
par
`
((
2
*
n
,
d
,
s
)
:
rest
)
|
otherwise
=
[]
where
n
=
bit
(
m
-
d
+
minN
)
-- allocate and check lots of trees
sumT
::
Int
->
Int
->
Int
->
Int
sumT
d
0
t
=
t
sumT
d
i
t
=
a
`
par
`
b
`
par
`
sumT
d
(
i
-
1
)
ans
where
a
=
check
(
make
i
d
)
b
=
check
(
make
(
-
i
)
d
)
ans
=
a
+
b
+
t
check
=
check'
True
0
-- traverse the tree, counting up the nodes
check'
::
Bool
->
Int
->
Tree
->
Int
check'
!
b
!
z
Nil
=
z
check'
b
z
(
Node
i
l
r
)
=
check'
(
not
b
)
(
check'
b
(
if
b
then
z
+
i
else
z
-
i
)
l
)
r
-- build a tree
make
::
Int
->
Int
->
Tree
make
i
0
=
Node
i
Nil
Nil
make
i
d
=
Node
i
(
make
(
i2
-
1
)
d2
)
(
make
i2
d2
)
where
i2
=
2
*
i
;
d2
=
d
-
1
shootout/binary-trees/Makefile
0 → 100644
View file @
f8f27b8b
TOP
=
../..
include
$(TOP)/mk/boilerplate.mk
include
$(TOP)/mk/target.mk
FAST_OPTS
=
12
NORM_OPTS
=
16
SLOW_OPTS
=
20
# official shootout setting
# The benchmark game also uses -fllvm, which we can't since it might
# not be available on the developer's machine.
HC_OPTS
+=
-XBangPatterns
-O2
-funbox-strict-fields
SRC_RUNTEST_OPTS
+=
+RTS
-K128M
-H
-RTS
shootout/binary-trees/binary-trees.faststdout
0 → 100644
View file @
f8f27b8b
stretch tree of depth 13 check: -1
8192 trees of depth 4 check: -8192
2048 trees of depth 6 check: -2048
512 trees of depth 8 check: -512
128 trees of depth 10 check: -128
32 trees of depth 12 check: -32
long lived tree of depth 12 check: -1
shootout/binary-trees/binary-trees.slowstdout
0 → 100644
View file @
f8f27b8b
stretch tree of depth 21 check: -1
2097152 trees of depth 4 check: -2097152
524288 trees of depth 6 check: -524288
131072 trees of depth 8 check: -131072
32768 trees of depth 10 check: -32768
8192 trees of depth 12 check: -8192
2048 trees of depth 14 check: -2048
512 trees of depth 16 check: -512
128 trees of depth 18 check: -128
32 trees of depth 20 check: -32
long lived tree of depth 20 check: -1
shootout/binary-trees/binary-trees.stdout
0 → 100644
View file @
f8f27b8b
stretch tree of depth 17 check: -1
131072 trees of depth 4 check: -131072
32768 trees of depth 6 check: -32768
8192 trees of depth 8 check: -8192
2048 trees of depth 10 check: -2048
512 trees of depth 12 check: -512
128 trees of depth 14 check: -128
32 trees of depth 16 check: -32
long lived tree of depth 16 check: -1
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment