Haskell-Cafe
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
December 2007
- 244 participants
- 302 discussions
Let me show you an example to prove it.
The example is limited to composition of unary functions defined on int
u::Int->Int
v::Int->Int
o ::(Int->Int)->(Int->Int)->(Int->Int)
o u v= \x->u(v(x))
#include <stdio.h>
#include <conio.h>
#include "functional.h"
int f1(int x){
return x+x;
}
int f2(int x){
return 2*x;
}
int g1(int x){
return x+1;
}
int g2(int x){
return x-1;
}
#define P1 P0 int main(){
#define P2 P1 printf("%d,%d,%d\n",2,
#define P3 O(f1,f2,P2)(2),
#define P4 O(g1,g2,P3)(3));
#define P5 P4 getch();
#define P6 P5 }
MAIN P6
Here is the file functional.h
#define FUNC2(x,y) x##y
#define FUNC1(x,y) FUNC2(x,y)
#define FUNC(x) FUNC1(x,__COUNTER__)
#define COMP(c,f,g,p) \
int c (int x) { return f(g(x)); }; \
p \
c
#define O(f,g,p) COMP( FUNC(a), f, g, p)
#define P0
#define MAIN
6
9
Alfonso Acosta wrote:
> mapSY :: (Typeable a, Typeable b) => (a -> b) -> Signal a -> Signal b
> mapSY f (Signal primSig) = Signal (PrimSignal (MapSY (toDyn f) primSig))
>
> The following process would be really useful but its compilation
> obviously fails:
>
> mapSnd :: Signal (a, a) -> Signal a
> mapSnd = mapSY snd
>
>
> Could not deduce (Typeable a) from the context () arising from a
> use of `mapSY'
> Possible fix:
> add (Typeable a) to the context of the type signature for `mapSnd'
It seems the compiler's complaint is reasonable. The signature of the
mapSY function says that mapSY may only be applied _provided_ that type
variables 'a' and 'b' are instantiated to the types that are members
of Typeable. That is, mapSY has a condition on its use. When you
write
> mapSndInt :: Signal (Int, Int) -> Signal Int
> mapSndInt = mapSY (snd :: (Int, Int) -> Int)
the condition is satisfied: 'a' and 'b' are instantiated to Int, and
Int is a member of Typeable. The definition of mapSnd has no
constraint. The compiler is upset: mapSY requires a condition, and
mapSnd does not provide any, and there is no obvious way how an
obligation Typeable a could have been satisfied otherwise. So, writing
> mapSnd :: Typeable a => Signal (a, a) -> Signal a
> mapSnd = mapSY snd
is the logical thing to do.
> Well, strangely enough, adding the "Typeable a" constraint hushed GHC
> but an error was instead triggered at runtime.
Perhaps the latter is the real problem. If one switches to dynamic
typing, the type errors show up as run-time errors. I believe the
typing of eval is a bit odd (and also not very useful). The following
code seems to work. It also shows how to apply a polymorphic function,
pairing, to to signals of any type. Here's a test:
> signal3 = cons const0 (cons const0 const1)
*Foo> :t signal3
signal3 :: Signal (Int, (Int, Float))
> test1 = mapSnd signal3
test1 :: Signal (Int, Float)
> test12 = beval test1
*Foo> :t test12
test12 :: (Int, Float)
*Foo> test12
(0,1.0)
{-# OPTIONS -fglasgow-exts #-}
module Foo where
import Data.Typeable
import Data.Dynamic
-- the phantom type parameter makes signal typing consistent
newtype Signal a = Signal PrimSignal
newtype PrimSignal = PrimSignal (Proc (PrimSignal))
data Proc input = MapSY Dynamic -- The processing function
input -- The process input
-- the rest of the processes are omitted
| Const Dynamic
| Cons Dynamic input input
eval :: PrimSignal -> Dynamic
-- evaluates the output of a process for one input
eval (PrimSignal (MapSY dynF dynIn)) = dynApp dynF (eval dynIn)
eval (PrimSignal (Cons cns a1 a2)) = dynApp (dynApp cns (eval a1)) (eval a2)
eval (PrimSignal (Const inp)) = inp
-- better eval
beval :: Typeable a => Signal a -> a
beval (Signal s) = maybe undefined id (fromDynamic (eval s))
-- sample signals
const0 :: Signal Int
const0 = Signal (PrimSignal (Const (toDyn (0::Int))))
const1 :: Signal Float
const1 = Signal (PrimSignal (Const (toDyn (1::Float))))
-- the map process constructor
mapSY :: (Typeable a, Typeable b) => (a -> b) -> Signal a -> Signal b
mapSY f (Signal primSig) = Signal (PrimSignal (MapSY (toDyn f) primSig))
add1 :: Signal Int -> Signal Int
add1 = mapSY ((+1) :: Int -> Int)
mapSndInt :: Signal (Int, Int) -> Signal Int
mapSndInt = mapSY (snd :: (Int, Int) -> Int)
-- it is important to give the signature to (,) below: we pack the cons
-- function of the right type!
cons :: forall a b. (Typeable a, Typeable b) =>
Signal a -> Signal b -> Signal (a,b)
cons (Signal sig1) (Signal sig2) =
Signal (PrimSignal (Cons (toDyn ((,)::a->b->(a,b))) sig1 sig2))
mapSnd :: (Typeable a, Typeable b) => Signal (b, a) -> Signal a
mapSnd = mapSY snd
signal3 = cons const0 (cons const0 const1)
-- *Foo> :t signal3
-- signal3 :: Signal (Int, (Int, Float))
test1 = mapSnd signal3
-- test1 :: Signal (Int, Float)
test11 = let Signal s = test1 in eval s
-- *Foo> test11
-- <<(Int,Float)>>
-- Too bad. But we can do better.
test12 = beval test1
{-
*Foo> :t test12
test12 :: (Int, Float)
*Foo> test12
(0,1.0)
-}
2
2

22 Dec '07
// I am getting sick and tired of working on this project and it's probably
// better to get it fired off than polishing it any further.
//
// This email could benefit from being rewritten from a rough draft into a
// well-crafted letter but that would take a couple of hours.
//
// So here it is, a lot rougher than I'd like -- but it *IS* :)
why so big input files?
easiest way to spot non-linearity and bad memory behaviour. Anyway, files
should be big enough to overflow caches and kick the gc in.
(short files interesting, too, but the big ones cause more complex behaviour
of run-time system and CPU. If complex behaviour is behaved then simple
behaviour probably is too -- but can still get its constant factors
improved. If complex behaviour bad, then shouldn't that be fixed in any
case?)
waitpid4() has a struct w/ info about the child program's resource usage.
unfortunately, the peakrss field is not filled in. Seems to be a general
Unix problem. I've seen complaints on the net that Solaris doesn't fill it
in, either. Other solution needed.
pause-at-end, /proc/self/maps + /proc/self/status. VmmHWM = peak of VmmRSS,
which is Resident (working) Set Size. It doesn't say what is shared with
other processes or the operating system, though. In our case, we don't
expect to share anything but some libraries -- which nobody else wants to
share with us anyway (except for the C library). We are the only user of
them.
Discovered about a week ago that I could probably have used waitid()
w/ WNOWAIT flag but didn't know. Was quick to write pause-at-end, anyway.
It took about 15 minutes from the desire to know the peak memory use to
having written and tested the first cut of it. Pause-at-end not completely
bullet-proof in case of dyn libraries that get unloaded before the end of
the program has been reached. On the other hand, plenty good enough for
these tests + can conceivably allow more intricate poking around than
waitid() solution.
getting good measurements - eatmem, dd, probably should also dd library.
good to have a "sacrificial run". Good to measure how good the measurements
are (rel. std.dev + user/sys/real check).
why average -- disturbances are mostly interrupts, daemons that everybody
have anyway, slightly luckier/unluckier physical pages. These are real
effects that nobody can control anyway. I'm not interested in the best
possible times on an ideal, undisturbed machine with a helpful kernel.
I'm interested in clean times under realistic circumstances. Therefore
average instead of minimum.
why I use real and not user/sys -- handling of blocking reads vs. mmap vs.
madvise/fadvise vs. reading in separate thread in the future. User+sys
would probably give me better numbers at the moment and I could change to
real later. Still, I choose to stay with real (and the difference is marginal,
anyway).
Funny that the exact distribution of time between sys and user fluctuates a
lot. In space-bslc8-lenfil-2 sys varies between 0.160s and 0.244s. Real is
completely stable with 5x 1.396s and 1x 1.397s.
look at /proc/interrupts, perhaps copy before/after to .intr? Warn if more
than 100 (or 1000) Hz + 10%?
write date/time + runlevel to platforminfo and/or sysinfo.
barcharts
why barcharts.
should the time/mem barcharts be equal length? don't think so (hard to
colour them in a text file. Would work with less -r and the console but
not in an email or a text editor. Visual difference is good).
But should perhaps not be /that/ different.
visible markers if measurements bad.
(5% real/user/sys check, typically within 0.1% on old laptop when doing a
quick or thorough benchmark. Occasionally up to 1% - and 3% on c/byte-4k
because it only takes 56ms in total.)
prints out how tight the user/sys/real thing is.
microarchitecture -- performance counters. Would be interesting to look at
once the obvious performance problems have been handled. Let's fix the
memory usage of bytestrings, the performance of lazy bytestrings, and
start using registers in the machine code first.
regularity of input file probably means that branch predictor on all three
CPUs can remember pattern of spaces vs. non-spaces (or at least part of the
pattern). Branch predictors not only use two-bit saturating counter for
strongly non-taken/weakly non-taken/weakly taken/strongly taken. They also
try to remember the pattern of jumps/non-jumps. A more realistic test
would have less regular input file. This effect is very small given the
current performance limiters, though.
cache -- turned out to be pretty regular (by eyeballing cachegrind reports).
Go up a factor of 10 in filesize and the number of access also went up a
factor of 10. The miss ratios stayed the same. The miss ratios differed
a bit between the benchmarks but I don't think it's time to look into that
yet. The data are available, though, for those who can't wait to look
into that.
minor page faults
we gather that through /usr/bin/time -- and could also get the same info
from dumping the right file inside /proc/self/. Probably not important yet.
Probably will be once all the low-lying fruit has been gathered up from the
ground.
More of a factor on slower OS'es than Linux.
C files. Buffer size.
reading it all in one go is slower than (re)using a small buffer. Cache
effects, both in the operating system when copying (because the destination
will be cached with a small buffer but non-cached with a big buffer) and in
the application (everything will be cached with the small buffer, nothing
with the big buffer). Note that at least the Core and the Athlon64 have
automatic prefetchers that tries to fill the cache in advance so we don't
have to wait for the cache misses. Doesn't quite seem to work.
Older caches had a different write behaviour, they were write-through instead
of the modern (lazy) write-back. For those caches the writing to the user-space
buffer should be slow even when a small buffer is reused all the time (because
we would have to wait for all the writes to be flushed out to main memory).
C files.
getchar/getchar_unlocked. A comparison with getchar() is NOT what the
simple haskell program does [grammar!]. Thread-safe by default (cause of
libraries). getchar_unlocked() is what the haskell programs do. getchar() and
getchar_unlocked() use a single buffer for stdin.
getwchar() and getwchar_unlocked() included at the insistence of wli. Much
slower, because it is run-time dependent on locale (to choose encoding).
Therefore, can't be a macro like getchar_unlocked() is. With an indirect
jump, should be same speed as getchar() on Core and Athlon64 -- but
curiously isn't.
C and Haskell integer sizes and other limitations.
Haskell uses unboxed 32-bit signed integers, except in lazy lenfil tests.
Most of the C programs are simple and just use an int for the space count.
One of them (space-megabuf)is more complicated.
off_t is 64-bit. ssize_t is 32-bit. Potential overflow in c/space-megabuf.
Potential 32-bit wrap-around in all my C tests. Same problem with all
Haskell tests, except for the two lenfil tests that use lazy bytestrings,
because they use a 64-bit int for the length of the intermediate string of
just the spaces filtered out from stdin.
Also potentially out of memory.
In practice, they have almost the same limit because they use about
107MB for the 143MB input file. In other words, it will run out
of virtual address space or RAM or swap at about the same time that the
others will run out of bits in a 32-bit signed integer.
-Peter
1
0

22 Dec '07
Everybody seems to use +RTS -sstderr to measure the memory performance of their
Haskell (ghc) code. That's what I started out doing, too.
However, top seemed to occasionally disagree with the run-time system.
I decided to dig deeper and ask the operating system at process exit time.
I use LD_PRELOAD to get my code injected into each benchmarked process where
it gets activated when the process is about to exit and copies /proc/self/maps
and /proc/self/status to stderr where the test harness captures them.
Unfortunately, -sstderr really *IS* unreliable!
tools/regensstderr.sh and tools/sstderr.pl are two scripts that together
generate bar graphs for an existing measurement tarball. I used the following
shell code to generate graphs for 7 different ghc/bytestring combinations:
(for F in ghc-thorough-6.6.1.tgz \
ghc-thorough-6.8.2.tgz ghc-thorough-6.8.2-bs0902.tgz \
ghc-thorough-6.9.tgz ghc-thorough-6.9-bs0902.tgz \
ghc-thorough-head.tgz ghc-thorough-head-bs0902.tgz; \
do \
printf "%s\n-------\n" $F; \
tools/regensstderr.sh $F; \
printf "\n\n"; \
done \
) > xx
The graphs clearly show that -sstderr sometimes severely underestimates the
memory use and sometimes somewhat overestimates it. Moreover, the errors are
not always for the same programs.
This holds for all ghc versions I've tested: 6.6.1, 6.8.2, 6.9.20071119, and
head as of noon 2007-12-19.
-Peter
ghc-thorough-6.6.1.tgz
-------
hs/byte-bs----acc: 1 147448 β |βββββββββββββββββββ |
hs/byte-bs----foldlx: 145 147468 βββββββββββ |βββββββββββββββββββ |
hs/byte-bs----foldrx: 1 147452 β |βββββββββββββββββββ |
hs/byte-bsl---acc: 2 2872 β |β |
hs/byte-xxxxx-acc-1: 1 1572 β |β |
hs/byte-xxxxx-acc-2: 1 1568 β |β |
hs/byte-xxxxx-foldl: 1 1572 β |β |
hs/space-bs-c8-acc-1: 1 147448 β |βββββββββββββββββββ |
hs/space-bs-c8-count: 1 147448 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 145 147468 βββββββββββ |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 145 147468 βββββββββββ |βββββββββββββββββββ |
hs/space-bs-c8-foldrx: 1 147448 β |βββββββββββββββββββ |
hs/space-bs-c8-lenfil: 145 147464 βββββββββββ |βββββββββββββββββββ |
hs/space-bslc8-acc-1: 2 2872 β |β |
hs/space-bslc8-acc-2: 2 2872 β |β |
hs/space-bslc8-acc-3: 2 2868 β |β |
hs/space-bslc8-count: 2 1476 β |β |
hs/space-bslc8-foldl: 2 1552 β |β |
hs/space-bslc8-foldlx-1: 2 1556 β |β |
hs/space-bslc8-foldlx-2: 2 1552 β |β |
hs/space-bslc8-foldr-1: 297 169480 βββββββββββββββββββββ|βββββββββββββββββββββ|
hs/space-bslc8-foldr-2: 297 169480 βββββββββββββββββββββ|βββββββββββββββββββββ|
hs/space-bslc8-lenfil-1: 38 38632 βββ |βββββ |
hs/space-bslc8-lenfil-2: 38 38628 βββ |βββββ |
hs/space-bsl---foldlx: 2 1560 β |β |
hs/space-xxxxx-acc-1: 1 1568 β |β |
hs/space-xxxxx-acc-2: 1 1572 β |β |
hs/space-xxxxx-foldl: 1 1572 β |β |
hs/space-xxxxx-lenfil: 1 1556 β |β |
c/byte-getchar: - -
c/byte-getchar-u: - -
c/byte-4k: - -
c/space-getchar: - -
c/space-getchar-u: - -
c/space-4k: - -
c/space-megabuf: - -
c/space-getwchar: - -
c/space-getwchar-u: - -
c/space-32k: - -
c/space-32k-8: - -
ghc-thorough-6.8.2.tgz
-------
hs/byte-bs----acc: 1 147500 β |βββββββββββββββββββ |
hs/byte-bs----foldlx: 145 147528 βββββββββββ |βββββββββββββββββββ |
hs/byte-bs----foldrx: 1 147500 β |βββββββββββββββββββ |
hs/byte-bsl---acc: 2 2920 β |β |
hs/byte-xxxxx-acc-1: 1 1632 β |β |
hs/byte-xxxxx-acc-2: 1 1636 β |β |
hs/byte-xxxxx-foldl: 1 1632 β |β |
hs/space-bs-c8-acc-1: 1 147492 β |βββββββββββββββββββ |
hs/space-bs-c8-count: 1 147500 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 145 147524 βββββββββββ |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 145 147520 βββββββββββ |βββββββββββββββββββ |
hs/space-bs-c8-foldrx: 1 147496 β |βββββββββββββββββββ |
hs/space-bs-c8-lenfil: 145 147524 βββββββββββ |βββββββββββββββββββ |
hs/space-bslc8-acc-1: 2 2920 β |β |
hs/space-bslc8-acc-2: 2 2924 β |β |
hs/space-bslc8-acc-3: 2 2924 β |β |
hs/space-bslc8-chunk-1: 2 1512 β |β |
hs/space-bslc8-chunk-2: 2 1512 β |β |
hs/space-bslc8-chunk-3: 2 1548 β |β |
hs/space-bslc8-chunk-4: 2 1512 β |β |
hs/space-bslc8-count: 2 1520 β |β |
hs/space-bslc8-foldl: 2 1620 β |β |
hs/space-bslc8-foldlx-1: 2 1620 β |β |
hs/space-bslc8-foldlx-2: 2 1616 β |β |
hs/space-bslc8-foldr-1: 297 169544 βββββββββββββββββββββ|βββββββββββββββββββββ|
hs/space-bslc8-foldr-2: 297 169544 βββββββββββββββββββββ|βββββββββββββββββββββ|
hs/space-bslc8-lenfil-1: 38 38644 βββ |βββββ |
hs/space-bslc8-lenfil-2: 38 38648 βββ |βββββ |
hs/space-bsl---foldlx: 2 1616 β |β |
hs/space-xxxxx-acc-1: 1 1636 β |β |
hs/space-xxxxx-acc-2: 1 1636 β |β |
hs/space-xxxxx-foldl: 1 1636 β |β |
hs/space-xxxxx-lenfil: 1 1608 β |β |
c/byte-getchar: - -
c/byte-getchar-u: - -
c/byte-4k: - -
c/space-getchar: - -
c/space-getchar-u: - -
c/space-4k: - -
c/space-megabuf: - -
c/space-getwchar: - -
c/space-getwchar-u: - -
c/space-32k: - -
c/space-32k-8: - -
ghc-thorough-6.8.2-bs0902.tgz
-------
hs/byte-bs----acc: 1 147616 β |βββββββββββββββββββ |
hs/byte-bs----foldlx: 1 147624 β |βββββββββββββββββββ |
hs/byte-bs----foldrx: 1 147624 β |βββββββββββββββββββ |
hs/byte-bsl---acc: 2 3040 β |β |
hs/byte-xxxxx-acc-1: 1 1636 β |β |
hs/byte-xxxxx-acc-2: 1 1636 β |β |
hs/byte-xxxxx-foldl: 1 1636 β |β |
hs/space-bs-c8-acc-1: 1 147608 β |βββββββββββββββββββ |
hs/space-bs-c8-count: 1 147612 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 1 147608 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 1 147608 β |βββββββββββββββββββ |
hs/space-bs-c8-foldrx: 1 147608 β |βββββββββββββββββββ |
hs/space-bs-c8-lenfil: 21 167176 βββ |βββββββββββββββββββββ|
hs/space-bslc8-acc-1: 2 3048 β |β |
hs/space-bslc8-acc-2: 2 3048 β |β |
hs/space-bslc8-acc-3: 2 3052 β |β |
hs/space-bslc8-chunk-1: 2 1636 β |β |
hs/space-bslc8-chunk-2: 2 1640 β |β |
hs/space-bslc8-chunk-3: 2 1644 β |β |
hs/space-bslc8-chunk-4: 2 1636 β |β |
hs/space-bslc8-count: 2 1656 β |β |
hs/space-bslc8-foldl: 2 1632 β |β |
hs/space-bslc8-foldlx-1: 2 1636 β |β |
hs/space-bslc8-foldlx-2: 2 1636 β |β |
hs/space-bslc8-foldr-1: 149 149076 βββββββββββββββββββββ|βββββββββββββββββββ |
hs/space-bslc8-foldr-2: 149 149076 βββββββββββββββββββββ|βββββββββββββββββββ |
hs/space-bslc8-lenfil-1: 2 1940 β |β |
hs/space-bslc8-lenfil-2: 2 1940 β |β |
hs/space-bsl---foldlx: 2 1620 β |β |
hs/space-xxxxx-acc-1: 1 1636 β |β |
hs/space-xxxxx-acc-2: 1 1636 β |β |
hs/space-xxxxx-foldl: 1 1636 β |β |
hs/space-xxxxx-lenfil: 1 1604 β |β |
c/byte-getchar: - -
c/byte-getchar-u: - -
c/byte-4k: - -
c/space-getchar: - -
c/space-getchar-u: - -
c/space-4k: - -
c/space-megabuf: - -
c/space-getwchar: - -
c/space-getwchar-u: - -
c/space-32k: - -
c/space-32k-8: - -
ghc-thorough-6.9.tgz
-------
hs/byte-bs----acc: 1 147752 β |ββββββββββββββββββ |
hs/byte-bs----foldlx: 145 147748 ββββββββββ |ββββββββββββββββββ |
hs/byte-bs----foldrx: 1 147744 β |ββββββββββββββββββ |
hs/byte-bsl---acc: 2 3172 β |β |
hs/byte-xxxxx-acc-1: 1 1904 β |β |
hs/byte-xxxxx-acc-2: 1 1904 β |β |
hs/byte-xxxxx-foldl: 1 1900 β |β |
hs/space-bs-c8-acc-1: 1 147736 β |ββββββββββββββββββ |
hs/space-bs-c8-count: 1 147744 β |ββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 145 147756 ββββββββββ |ββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 145 147752 ββββββββββ |ββββββββββββββββββ |
hs/space-bs-c8-foldrx: 1 147732 β |ββββββββββββββββββ |
hs/space-bs-c8-lenfil: 145 147756 ββββββββββ |ββββββββββββββββββ |
hs/space-bslc8-acc-1: 2 3192 β |β |
hs/space-bslc8-acc-2: 2 3192 β |β |
hs/space-bslc8-acc-3: 2 3196 β |β |
hs/space-bslc8-chunk-1: 64 65192 βββββ |ββββββββ |
hs/space-bslc8-chunk-2: 64 65192 βββββ |ββββββββ |
hs/space-bslc8-chunk-3: 74 75240 βββββ |βββββββββ |
hs/space-bslc8-chunk-4: 75 76188 βββββ |βββββββββ |
hs/space-bslc8-count: 78 79204 ββββββ |ββββββββββ |
hs/space-bslc8-foldl: 85 85868 ββββββ |βββββββββββ |
hs/space-bslc8-foldlx-1: 85 85864 ββββββ |βββββββββββ |
hs/space-bslc8-foldlx-2: 85 85868 ββββββ |βββββββββββ |
hs/space-bslc8-foldr-1: 297 169700 ββββββββββββββββββββ|ββββββββββββββββββββ|
hs/space-bslc8-foldr-2: 297 169700 ββββββββββββββββββββ|ββββββββββββββββββββ|
hs/space-bslc8-lenfil-1: 115 109404 ββββββββ |βββββββββββββ |
hs/space-bslc8-lenfil-2: 115 109404 ββββββββ |βββββββββββββ |
hs/space-bsl---foldlx: 85 85836 ββββββ |βββββββββββ |
hs/space-xxxxx-acc-1: 1 1904 β |β |
hs/space-xxxxx-acc-2: 1 1904 β |β |
hs/space-xxxxx-foldl: 1 1900 β |β |
hs/space-xxxxx-lenfil: 1 1892 β |β |
hand/byte-bs----acc-a: 1 147764 β |ββββββββββββββββββ |
hand/byte-bs----acc-b: 1 147764 β |ββββββββββββββββββ |
hand/byte-bs----acc-c: 1 147760 β |ββββββββββββββββββ |
hand/byte-bs----acc-d: 1 147760 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-a: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-b: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-c: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-d: 1 147756 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-e: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-f: 1 147748 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-g: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-h: 1 147748 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-i: 1 147748 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-j: 1 147748 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-k: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-l: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-m: 1 147748 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-n: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-o: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-p: 1 147752 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-q: 1 147748 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-r: 1 147748 β |ββββββββββββββββββ |
hand/space-bs-c8-acc-1-s: 1 147744 β |ββββββββββββββββββ |
c/byte-getchar: - -
c/byte-getchar-u: - -
c/byte-4k: - -
c/space-getchar: - -
c/space-getchar-u: - -
c/space-4k: - -
c/space-megabuf: - -
c/space-getwchar: - -
c/space-getwchar-u: - -
c/space-32k: - -
c/space-32k-8: - -
ghc-thorough-6.9-bs0902.tgz
-------
hs/byte-bs----acc: 1 147732 β |βββββββββββββββββββ |
hs/byte-bs----foldlx: 1 147736 β |βββββββββββββββββββ |
hs/byte-bs----foldrx: 1 147740 β |βββββββββββββββββββ |
hs/byte-bsl---acc: 2 3184 β |β |
hs/byte-xxxxx-acc-1: 1 1904 β |β |
hs/byte-xxxxx-acc-2: 1 1900 β |β |
hs/byte-xxxxx-foldl: 1 1904 β |β |
hs/space-bs-c8-acc-1: 1 147740 β |βββββββββββββββββββ |
hs/space-bs-c8-count: 1 147756 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 1 147744 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 1 147748 β |βββββββββββββββββββ |
hs/space-bs-c8-foldrx: 1 147748 β |βββββββββββββββββββ |
hs/space-bs-c8-lenfil: 21 167300 βββ |βββββββββββββββββββββ|
hs/space-bslc8-acc-1: 2 3228 β |β |
hs/space-bslc8-acc-2: 2 3228 β |β |
hs/space-bslc8-acc-3: 2 3232 β |β |
hs/space-bslc8-chunk-1: 65 66216 ββββββββββ |βββββββββ |
hs/space-bslc8-chunk-2: 65 66216 ββββββββββ |βββββββββ |
hs/space-bslc8-chunk-3: 65 66208 ββββββββββ |βββββββββ |
hs/space-bslc8-chunk-4: 78 79232 βββββββββββ |ββββββββββ |
hs/space-bslc8-count: 81 82248 ββββββββββββ |βββββββββββ |
hs/space-bslc8-foldl: 78 79224 βββββββββββ |ββββββββββ |
hs/space-bslc8-foldlx-1: 78 79224 βββββββββββ |ββββββββββ |
hs/space-bslc8-foldlx-2: 78 79224 βββββββββββ |ββββββββββ |
hs/space-bslc8-foldr-1: 149 149704 βββββββββββββββββββββ|βββββββββββββββββββ |
hs/space-bslc8-foldr-2: 149 149708 βββββββββββββββββββββ|βββββββββββββββββββ |
hs/space-bslc8-lenfil-1: 81 82324 ββββββββββββ |βββββββββββ |
hs/space-bslc8-lenfil-2: 81 82328 ββββββββββββ |βββββββββββ |
hs/space-bsl---foldlx: 78 79184 βββββββββββ |ββββββββββ |
hs/space-xxxxx-acc-1: 1 1904 β |β |
hs/space-xxxxx-acc-2: 1 1900 β |β |
hs/space-xxxxx-foldl: 1 1904 β |β |
hs/space-xxxxx-lenfil: 1 1892 β |β |
c/byte-getchar: - -
c/byte-getchar-u: - -
c/byte-4k: - -
c/space-getchar: - -
c/space-getchar-u: - -
c/space-4k: - -
c/space-megabuf: - -
c/space-getwchar: - -
c/space-getwchar-u: - -
c/space-32k: - -
c/space-32k-8: - -
ghc-thorough-head.tgz
-------
hs/byte-bs----acc: 1 147772 β |βββββββββββββββββββ |
hs/byte-bs----foldlx: 145 147796 βββββββββββ |βββββββββββββββββββ |
hs/byte-bs----foldrx: 1 147772 β |βββββββββββββββββββ |
hs/byte-bsl---acc: 2 3212 β |β |
hs/byte-xxxxx-acc-1: 1 1900 β |β |
hs/byte-xxxxx-acc-2: 1 1900 β |β |
hs/byte-xxxxx-foldl: 1 1900 β |β |
hs/space-bs-c8-acc-1: 1 147752 β |βββββββββββββββββββ |
hs/space-bs-c8-count: 1 147764 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 145 147796 βββββββββββ |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 145 147796 βββββββββββ |βββββββββββββββββββ |
hs/space-bs-c8-foldrx: 1 147760 β |βββββββββββββββββββ |
hs/space-bs-c8-lenfil: 145 147788 βββββββββββ |βββββββββββββββββββ |
hs/space-bslc8-acc-1: 2 3180 β |β |
hs/space-bslc8-acc-2: 2 3180 β |β |
hs/space-bslc8-acc-3: 2 3172 β |β |
hs/space-bslc8-chunk-1: 64 65204 βββββ |βββββββββ |
hs/space-bslc8-chunk-2: 64 65204 βββββ |βββββββββ |
hs/space-bslc8-chunk-3: 74 75216 ββββββ |ββββββββββ |
hs/space-bslc8-chunk-4: 75 76176 ββββββ |ββββββββββ |
hs/space-bslc8-count: 78 79220 ββββββ |ββββββββββ |
hs/space-bslc8-foldl: 85 85852 ββββββ |βββββββββββ |
hs/space-bslc8-foldlx-1: 85 85852 ββββββ |βββββββββββ |
hs/space-bslc8-foldlx-2: 85 85852 ββββββ |βββββββββββ |
hs/space-bslc8-foldr-1: 297 169680 βββββββββββββββββββββ|βββββββββββββββββββββ|
hs/space-bslc8-foldr-2: 297 169676 βββββββββββββββββββββ|βββββββββββββββββββββ|
hs/space-bslc8-lenfil-1: 115 109388 βββββββββ |ββββββββββββββ |
hs/space-bslc8-lenfil-2: 115 109392 βββββββββ |ββββββββββββββ |
hs/space-bsl---foldlx: 85 85864 ββββββ |βββββββββββ |
hs/space-xxxxx-acc-1: 1 1900 β |β |
hs/space-xxxxx-acc-2: 1 1904 β |β |
hs/space-xxxxx-foldl: 1 1904 β |β |
hs/space-xxxxx-lenfil: 1 1888 β |β |
c/byte-getchar: - -
c/byte-getchar-u: - -
c/byte-4k: - -
c/space-getchar: - -
c/space-getchar-u: - -
c/space-4k: - -
c/space-megabuf: - -
c/space-getwchar: - -
c/space-getwchar-u: - -
c/space-32k: - -
c/space-32k-8: - -
ghc-thorough-head-bs0902.tgz
-------
hs/byte-bs----acc: 1 147780 β |βββββββββββββββββββ |
hs/byte-bs----foldlx: 1 147780 β |βββββββββββββββββββ |
hs/byte-bs----foldrx: 1 147784 β |βββββββββββββββββββ |
hs/byte-bsl---acc: 2 3216 β |β |
hs/byte-xxxxx-acc-1: 1 1900 β |β |
hs/byte-xxxxx-acc-2: 1 1896 β |β |
hs/byte-xxxxx-foldl: 1 1896 β |β |
hs/space-bs-c8-acc-1: 1 147752 β |βββββββββββββββββββ |
hs/space-bs-c8-count: 1 147776 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 1 147752 β |βββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 1 147756 β |βββββββββββββββββββ |
hs/space-bs-c8-foldrx: 1 147756 β |βββββββββββββββββββ |
hs/space-bs-c8-lenfil: 21 167320 βββ |βββββββββββββββββββββ|
hs/space-bslc8-acc-1: 2 3196 β |β |
hs/space-bslc8-acc-2: 2 3200 β |β |
hs/space-bslc8-acc-3: 2 3208 β |β |
hs/space-bslc8-chunk-1: 65 66224 ββββββββββ |βββββββββ |
hs/space-bslc8-chunk-2: 65 66228 ββββββββββ |βββββββββ |
hs/space-bslc8-chunk-3: 65 66224 ββββββββββ |βββββββββ |
hs/space-bslc8-chunk-4: 78 79204 βββββββββββ |ββββββββββ |
hs/space-bslc8-count: 81 82224 ββββββββββββ |βββββββββββ |
hs/space-bslc8-foldl: 78 79196 βββββββββββ |ββββββββββ |
hs/space-bslc8-foldlx-1: 78 79196 βββββββββββ |ββββββββββ |
hs/space-bslc8-foldlx-2: 78 79196 βββββββββββ |ββββββββββ |
hs/space-bslc8-foldr-1: 149 149680 βββββββββββββββββββββ|βββββββββββββββββββ |
hs/space-bslc8-foldr-2: 149 149676 βββββββββββββββββββββ|βββββββββββββββββββ |
hs/space-bslc8-lenfil-1: 81 82304 ββββββββββββ |βββββββββββ |
hs/space-bslc8-lenfil-2: 81 82300 ββββββββββββ |βββββββββββ |
hs/space-bsl---foldlx: 78 79208 βββββββββββ |ββββββββββ |
hs/space-xxxxx-acc-1: 1 1904 β |β |
hs/space-xxxxx-acc-2: 1 1900 β |β |
hs/space-xxxxx-foldl: 1 1904 β |β |
hs/space-xxxxx-lenfil: 1 1888 β |β |
c/byte-getchar: - -
c/byte-getchar-u: - -
c/byte-4k: - -
c/space-getchar: - -
c/space-getchar-u: - -
c/space-4k: - -
c/space-megabuf: - -
c/space-getwchar: - -
c/space-getwchar-u: - -
c/space-32k: - -
c/space-32k-8: - -
1
0

[12/16] SBM: Graphs for 7 ghc/bytestring combinations on a 2GHz Athlon64 300+
by Peter Firefly Brodersen Lund 22 Dec '07
by Peter Firefly Brodersen Lund 22 Dec '07
22 Dec '07
This report combines the measurements from 7 ghc/bytestring combinations on a
single machine, namely:
ghc 6.6.1
ghc 6.8.2
ghc 6.8.2 + bytestring 0.9.0.2
ghc 6.9.20071119
ghc 6.9.20071119 + bytestring 0.9.0.2
ghc head-as-of-noon-2007-12-19
ghc head-as-of-noon-2007-12-19 + bytestring 0.9.0.2
This is the command I ran to generate the report:
RESCALE=1 EXCLUDE='(^hand/|^c/)' \
tools/merge.pl \
ghc-thorough-6.6.1.tgz \
ghc-thorough-6.8.2.tgz ghc-thorough-6.8.2-bs0902.tgz \
ghc-thorough-6.9.tgz ghc-thorough-6.9-bs0902.tgz \
ghc-thorough-head.tgz ghc-thorough-head-bs0902.tgz \
> mergerep-amdy.txt
We can readily see that there are some memory leaks with ghc 6.9.x. We can
also see that Don Stewart's fix in bytestring 0.9.0.2 actually fixed things for
hs/space-bslc8-lenfil-1 on ghc 6.8.2 but only improved things slightly for
6.9.x. It also makes things worse for hs/space-bs-c8-lenfil on 6.8.2 and both
the 6.9.x's.
Lazy bytestrings are slow, when used "manually", but quite acceptable, memory-
wise. On the other hand, they cost dearly in memory on 6.9.x unless one does
it all "by hand".
Good old native strings seem to be the most predictable of the bunch but they
are a bit slow. Surprisingly, they are not always /the/ slowest option
measured!
hs/space-bslc8-acc-1 and hs/space-bslc8-acc-2 are actually slower on ghc 6.6.1
than the native strings are in all combinations except hs/space-xxxxx-lenfil.
-Peter
PS: Note that this is the same report that I sent yesterday, except that it
had the order of some of the benchmarks slightly wrong.
charybdis
ghc 6.6.1
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=
charybdis
ghc 6.8.2
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=
charybdis
ghc 6.8.2
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=-bs0.9.0.2
charybdis
ghc 6.9.20071119
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=
charybdis
ghc 6.9.20071119
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=-bs0.9.0.2
charybdis
ghc 6.9.20071217
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=
charybdis
ghc 6.9.20071217
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=-bs0.9.0.2
Time (byte counting) std
-------------------- avg dev slack
hs/byte-bs----acc: 1.020 40β° 0.0 ββββββ |
-- 0.703 5β° 0.4 ββββ |
-- 0.702 7β° 0.3 ββββ |
-- 0.705 7β° 0.1 ββββ |
-- 0.712 3β° 0.1 ββββ |
-- 0.706 7β° 0.1 ββββ |
-- 0.707 7β° 0.9 ββββ |
hs/byte-bs----foldlx: 0.789 3β° 0.3 ββββ |
-- 0.993 2β° 0.2 βββββ |
-- 1.102 1β° 0.2 ββββββ |
-- 1.002 1β° 0.5 ββββββ |
-- 1.112 1β° 0.3 ββββββ |
-- 1.024 2β° 0.2 ββββββ |
-- 1.111 1β° 0.1 ββββββ |
hs/byte-bs----foldrx: 0.813 3β° 0.1 βββββ |
-- 1.102 2β° 0.3 ββββββ |
-- 1.100 1β° 0.1 ββββββ |
-- 1.112 2β° 0.1 ββββββ |
-- 1.114 1β° 0.4 ββββββ |
-- 1.113 2β° 0.5 ββββββ |
-- 1.112 1β° 0.2 ββββββ |
hs/byte-bsl---acc: 3.599 13β° 0.0 βββββββββββββββββββ |
-- 2.609 17β° 0.0 ββββββββββββββ |
-- 2.560 15β° 0.1 βββββββββββββ |
-- 2.595 14β° 0.1 ββββββββββββββ |
-- 2.574 16β° 0.1 βββββββββββββ |
-- 2.613 12β° 0.2 ββββββββββββββ |
-- 2.656 44β° 0.1 ββββββββββββββ |
hs/byte-xxxxx-acc-1: 4.606 5β° 0.0 ββββββββββββββββββββββββ |
-- 4.730 3β° 0.0 ββββββββββββββββββββββββ |
-- 4.722 3β° 0.1 ββββββββββββββββββββββββ |
-- 4.436 5β° 0.0 βββββββββββββββββββββββ |
-- 4.500 6β° 0.1 βββββββββββββββββββββββ |
-- 4.462 4β° 0.1 βββββββββββββββββββββββ |
-- 4.499 7β° 0.1 βββββββββββββββββββββββ |
hs/byte-xxxxx-acc-2: 4.595 5β° 0.0 ββββββββββββββββββββββββ |
-- 4.704 1β° 0.0 ββββββββββββββββββββββββ |
-- 4.722 6β° 0.0 ββββββββββββββββββββββββ |
-- 4.473 8β° 0.0 βββββββββββββββββββββββ |
-- 4.493 5β° 0.0 βββββββββββββββββββββββ |
-- 4.477 3β° 0.1 βββββββββββββββββββββββ |
-- 4.446 2β° 0.0 βββββββββββββββββββββββ |
hs/byte-xxxxx-foldl: 4.566 9β° 0.0 ββββββββββββββββββββββββ |
-- 4.754 6β° 0.1 βββββββββββββββββββββββββ |
-- 4.735 7β° 0.0 ββββββββββββββββββββββββ |
-- 4.412 10β° 0.0 βββββββββββββββββββββββ |
-- 4.486 3β° 0.0 βββββββββββββββββββββββ |
-- 4.473 3β° 0.0 βββββββββββββββββββββββ |
-- 4.511 10β° 0.1 βββββββββββββββββββββββ |
Memory: Peak
------- KB
hs/byte-bs----acc: 147448 ββββββββββββββββββββββββββββββββββββββββ |
-- 147500 ββββββββββββββββββββββββββββββββββββββββ |
-- 147616 ββββββββββββββββββββββββββββββββββββββββ |
-- 147752 ββββββββββββββββββββββββββββββββββββββββ |
-- 147732 ββββββββββββββββββββββββββββββββββββββββ |
-- 147772 ββββββββββββββββββββββββββββββββββββββββ |
-- 147780 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldlx: 147468 ββββββββββββββββββββββββββββββββββββββββ |
-- 147528 ββββββββββββββββββββββββββββββββββββββββ |
-- 147624 ββββββββββββββββββββββββββββββββββββββββ |
-- 147748 ββββββββββββββββββββββββββββββββββββββββ |
-- 147736 ββββββββββββββββββββββββββββββββββββββββ |
-- 147796 βββββββββββββββββββββββββββββββββββββββββ |
-- 147780 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldrx: 147452 ββββββββββββββββββββββββββββββββββββββββ |
-- 147500 ββββββββββββββββββββββββββββββββββββββββ |
-- 147624 ββββββββββββββββββββββββββββββββββββββββ |
-- 147744 ββββββββββββββββββββββββββββββββββββββββ |
-- 147740 ββββββββββββββββββββββββββββββββββββββββ |
-- 147772 ββββββββββββββββββββββββββββββββββββββββ |
-- 147784 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bsl---acc: 2872 β |
-- 2920 β |
-- 3040 β |
-- 3172 β |
-- 3184 β |
-- 3212 β |
-- 3216 β |
hs/byte-xxxxx-acc-1: 1572 β |
-- 1632 β |
-- 1636 β |
-- 1904 β |
-- 1904 β |
-- 1900 β |
-- 1900 β |
hs/byte-xxxxx-acc-2: 1568 β |
-- 1636 β |
-- 1636 β |
-- 1904 β |
-- 1900 β |
-- 1900 β |
-- 1896 β |
hs/byte-xxxxx-foldl: 1572 β |
-- 1632 β |
-- 1636 β |
-- 1900 β |
-- 1904 β |
-- 1900 β |
-- 1896 β |
Time (space counting) std
--------------------- avg dev slack
hs/space-bs-c8-acc-1: 1.287 20β° 0.2 βββββββ |
-- 1.131 2β° 0.1 ββββββ |
-- 1.132 2β° 0.3 ββββββ |
-- 1.145 1β° 0.2 ββββββ |
-- 1.150 1β° 0.2 ββββββ |
-- 1.147 2β° 0.1 ββββββ |
-- 1.147 2β° 0.2 ββββββ |
hs/space-bs-c8-count: 0.770 2β° 0.0 ββββ |
-- 0.711 1β° 0.4 ββββ |
-- 0.513 2β° 0.2 βββ |
-- 0.521 1β° 0.2 βββ |
-- 0.523 3β° 0.2 βββ |
-- 0.522 5β° 0.2 βββ |
-- 0.523 3β° 0.6 βββ |
hs/space-bs-c8-foldlx-1: 1.272 1β° 0.2 βββββββ |
-- 1.205 2β° 0.2 βββββββ |
-- 1.164 3β° 0.0 ββββββ |
-- 1.221 1β° 0.1 βββββββ |
-- 1.176 1β° 0.3 ββββββ |
-- 1.259 1β° 0.1 βββββββ |
-- 1.176 1β° 0.2 ββββββ |
hs/space-bs-c8-foldlx-2: 1.270 1β° 0.2 βββββββ |
-- 1.207 1β° 0.2 βββββββ |
-- 1.165 2β° 0.1 ββββββ |
-- 1.219 2β° 0.2 βββββββ |
-- 1.176 1β° 0.3 ββββββ |
-- 1.258 1β° 0.2 βββββββ |
-- 1.177 1β° 0.2 ββββββ |
hs/space-bs-c8-foldrx: 1.064 2β° 0.1 ββββββ |
-- 1.168 2β° 0.2 ββββββ |
-- 1.164 1β° 0.3 ββββββ |
-- 1.172 2β° 0.3 ββββββ |
-- 1.177 1β° 0.2 ββββββ |
-- 1.176 1β° 0.2 ββββββ |
-- 1.176 1β° 0.1 ββββββ |
hs/space-bs-c8-lenfil: 1.271 1β° 0.1 βββββββ |
-- 1.218 1β° 0.2 βββββββ |
-- 0.541 3β° 0.2 βββ |
-- 1.223 1β° 0.2 βββββββ |
-- 0.549 1β° 0.4 βββ |
-- 1.225 1β° 0.2 βββββββ |
-- 0.551 5β° 0.4 βββ |
hs/space-bslc8-acc-1: 6.367 17β° 0.2 βββββββββββββββββββββββββββββββββ |
-- 3.396 7β° 0.1 ββββββββββββββββββ |
-- 3.508 4β° 0.1 ββββββββββββββββββ |
-- 3.388 10β° 0.1 ββββββββββββββββββ |
-- 3.441 10β° 0.1 ββββββββββββββββββ |
-- 3.438 3β° 0.0 ββββββββββββββββββ |
-- 3.434 13β° 0.1 ββββββββββββββββββ |
hs/space-bslc8-acc-2: 6.150 21β° 0.0 ββββββββββββββββββββββββββββββββ |
-- 3.470 5β° 0.0 ββββββββββββββββββ |
-- 3.439 10β° 0.1 ββββββββββββββββββ |
-- 3.386 5β° 0.1 ββββββββββββββββββ |
-- 3.479 11β° 0.1 ββββββββββββββββββ |
-- 3.467 6β° 0.1 ββββββββββββββββββ |
-- 3.470 10β° 0.1 ββββββββββββββββββ |
hs/space-bslc8-acc-3: 4.041 21β° 0.1 βββββββββββββββββββββ |
-- 2.959 13β° 0.0 βββββββββββββββ |
-- 2.920 16β° 0.1 βββββββββββββββ |
-- 2.832 4β° 0.1 βββββββββββββββ |
-- 2.925 14β° 0.1 βββββββββββββββ |
-- 2.987 9β° 0.0 ββββββββββββββββ |
-- 2.996 20β° 0.1 ββββββββββββββββ |
hs/space-bslc8-chunk-1: n/a
-- 1.054 0β° 0.3 ββββββ |
-- 1.053 1β° 0.1 ββββββ |
-- 1.094 0β° 0.3 ββββββ |
-- 1.088 0β° 0.0 ββββββ |
-- 1.096 1β° 0.1 ββββββ |
-- 1.089 0β° 0.6 ββββββ |
hs/space-bslc8-chunk-2: n/a
-- 1.055 0β° 0.3 ββββββ |
-- 1.053 0β° 0.1 ββββββ |
-- 1.094 1β° 0.3 ββββββ |
-- 1.088 1β° 0.2 ββββββ |
-- 1.096 1β° 0.2 ββββββ |
-- 1.089 0β° 0.1 ββββββ |
hs/space-bslc8-chunk-3: n/a
-- 1.190 4β° 0.2 ββββββ |
-- 1.199 1β° 0.3 βββββββ |
-- 1.087 1β° 0.3 ββββββ |
-- 1.051 1β° 0.4 ββββββ |
-- 1.077 1β° 0.1 ββββββ |
-- 1.053 1β° 0.2 ββββββ |
hs/space-bslc8-chunk-4: n/a
-- 1.054 0β° 0.2 ββββββ |
-- 1.054 0β° 0.2 ββββββ |
-- 1.099 0β° 0.3 ββββββ |
-- 1.097 1β° 0.1 ββββββ |
-- 1.094 1β° 0.2 ββββββ |
-- 1.096 0β° 0.0 ββββββ |
hs/space-bslc8-count: 0.713 1β° 0.3 ββββ |
-- 0.735 1β° 0.4 ββββ |
-- 0.431 0β° 0.7 βββ |
-- 0.477 2β° 0.4 βββ |
-- 0.482 1β° 0.4 βββ |
-- 0.479 1β° 0.6 βββ |
-- 0.482 2β° 0.4 βββ |
hs/space-bslc8-foldl: 1.431 1β° 0.3 ββββββββ |
-- 1.398 1β° 0.2 ββββββββ |
-- 1.197 1β° 0.2 ββββββ |
-- 1.458 1β° 0.3 ββββββββ |
-- 1.059 0β° 0.0 ββββββ |
-- 1.459 1β° 0.1 ββββββββ |
-- 1.061 0β° 0.4 ββββββ |
hs/space-bslc8-foldlx-1: 1.430 1β° 0.1 ββββββββ |
-- 1.400 1β° 0.1 ββββββββ |
-- 1.197 1β° 0.0 ββββββ |
-- 1.458 0β° 0.1 ββββββββ |
-- 1.060 1β° 0.0 ββββββ |
-- 1.457 1β° 0.1 ββββββββ |
-- 1.060 1β° 0.2 ββββββ |
hs/space-bslc8-foldlx-2: 1.431 1β° 0.1 ββββββββ |
-- 1.399 1β° 0.1 ββββββββ |
-- 1.196 1β° 0.1 ββββββ |
-- 1.457 1β° 0.1 ββββββββ |
-- 1.060 1β° 0.3 ββββββ |
-- 1.458 1β° 0.1 ββββββββ |
-- 1.060 1β° 0.0 ββββββ |
hs/space-bslc8-foldr-1: 1.748 1β° 0.0 βββββββββ |
-- 1.579 2β° 0.1 ββββββββ |
-- 1.220 2β° 0.2 βββββββ |
-- 1.312 1β° 0.2 βββββββ |
-- 1.213 1β° 0.2 βββββββ |
-- 1.325 4β° 0.2 βββββββ |
-- 1.213 2β° 0.2 βββββββ |
hs/space-bslc8-foldr-2: 1.745 1β° 0.1 βββββββββ |
-- 1.579 2β° 0.1 ββββββββ |
-- 1.220 1β° 0.2 βββββββ |
-- 1.315 1β° 0.2 βββββββ |
-- 1.210 1β° 0.2 βββββββ |
-- 1.317 4β° 0.2 βββββββ |
-- 1.213 2β° 0.2 βββββββ |
hs/space-bslc8-lenfil-1: 1.521 7β° 0.2 ββββββββ |
-- 1.295 1β° 0.2 βββββββ |
-- 0.429 0β° 0.2 βββ |
-- 1.323 1β° 0.1 βββββββ |
-- 0.483 2β° 0.4 βββ |
-- 1.327 1β° 0.2 βββββββ |
-- 0.482 2β° 0.4 βββ |
hs/space-bslc8-lenfil-2: 1.532 6β° 0.1 ββββββββ |
-- 1.296 0β° 0.0 βββββββ |
-- 0.429 0β° 0.2 βββ |
-- 1.325 1β° 0.1 βββββββ |
-- 0.483 1β° 0.6 βββ |
-- 1.327 1β° 0.2 βββββββ |
-- 0.482 2β° 0.4 βββ |
hs/space-bsl---foldlx: 1.288 1β° 0.2 βββββββ |
-- 1.333 1β° 0.0 βββββββ |
-- 1.168 1β° 0.2 ββββββ |
-- 1.391 1β° 0.1 βββββββ |
-- 1.006 1β° 0.3 ββββββ |
-- 1.395 1β° 0.1 ββββββββ |
-- 1.008 1β° 0.2 ββββββ |
hs/space-xxxxx-acc-1: 5.036 7β° 0.1 ββββββββββββββββββββββββββ |
-- 5.381 6β° 0.0 ββββββββββββββββββββββββββββ |
-- 5.358 8β° 0.1 ββββββββββββββββββββββββββββ |
-- 4.991 1β° 0.1 ββββββββββββββββββββββββββ |
-- 5.047 7β° 0.1 ββββββββββββββββββββββββββ |
-- 5.051 3β° 0.1 ββββββββββββββββββββββββββ |
-- 5.049 4β° 0.1 ββββββββββββββββββββββββββ |
hs/space-xxxxx-acc-2: 5.009 7β° 0.1 ββββββββββββββββββββββββββ |
-- 5.437 4β° 0.1 ββββββββββββββββββββββββββββ |
-- 5.406 2β° 0.0 ββββββββββββββββββββββββββββ |
-- 4.985 1β° 0.0 ββββββββββββββββββββββββββ |
-- 5.057 4β° 0.1 ββββββββββββββββββββββββββ |
-- 5.048 6β° 0.1 ββββββββββββββββββββββββββ |
-- 5.089 6β° 0.0 ββββββββββββββββββββββββββ |
hs/space-xxxxx-foldl: 5.024 5β° 0.0 ββββββββββββββββββββββββββ |
-- 5.371 9β° 0.0 ββββββββββββββββββββββββββββ |
-- 5.301 9β° 0.1 βββββββββββββββββββββββββββ |
-- 5.035 2β° 0.1 ββββββββββββββββββββββββββ |
-- 5.037 3β° 0.0 ββββββββββββββββββββββββββ |
-- 5.046 4β° 0.0 ββββββββββββββββββββββββββ |
-- 5.042 4β° 0.0 ββββββββββββββββββββββββββ |
hs/space-xxxxx-lenfil: 7.042 4β° 0.0 ββββββββββββββββββββββββββββββββββββ |
-- 7.505 3β° 0.0 ββββββββββββββββββββββββββββββββββββββ|
-- 7.498 3β° 0.0 ββββββββββββββββββββββββββββββββββββββ|
-- 7.106 8β° 0.1 ββββββββββββββββββββββββββββββββββββ |
-- 7.092 3β° 0.1 ββββββββββββββββββββββββββββββββββββ |
-- 7.083 3β° 0.0 ββββββββββββββββββββββββββββββββββββ |
-- 7.121 5β° 0.1 ββββββββββββββββββββββββββββββββββββ |
Memory: Peak
------- KB
hs/space-bs-c8-acc-1: 147448 ββββββββββββββββββββββββββββββββββββββββ |
-- 147492 ββββββββββββββββββββββββββββββββββββββββ |
-- 147608 ββββββββββββββββββββββββββββββββββββββββ |
-- 147736 ββββββββββββββββββββββββββββββββββββββββ |
-- 147740 ββββββββββββββββββββββββββββββββββββββββ |
-- 147752 ββββββββββββββββββββββββββββββββββββββββ |
-- 147752 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-count: 147448 ββββββββββββββββββββββββββββββββββββββββ |
-- 147500 ββββββββββββββββββββββββββββββββββββββββ |
-- 147612 ββββββββββββββββββββββββββββββββββββββββ |
-- 147744 ββββββββββββββββββββββββββββββββββββββββ |
-- 147756 ββββββββββββββββββββββββββββββββββββββββ |
-- 147764 ββββββββββββββββββββββββββββββββββββββββ |
-- 147776 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 147468 ββββββββββββββββββββββββββββββββββββββββ |
-- 147524 ββββββββββββββββββββββββββββββββββββββββ |
-- 147608 ββββββββββββββββββββββββββββββββββββββββ |
-- 147756 ββββββββββββββββββββββββββββββββββββββββ |
-- 147744 ββββββββββββββββββββββββββββββββββββββββ |
-- 147796 βββββββββββββββββββββββββββββββββββββββββ |
-- 147752 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 147468 ββββββββββββββββββββββββββββββββββββββββ |
-- 147520 ββββββββββββββββββββββββββββββββββββββββ |
-- 147608 ββββββββββββββββββββββββββββββββββββββββ |
-- 147752 ββββββββββββββββββββββββββββββββββββββββ |
-- 147748 ββββββββββββββββββββββββββββββββββββββββ |
-- 147796 βββββββββββββββββββββββββββββββββββββββββ |
-- 147756 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldrx: 147448 ββββββββββββββββββββββββββββββββββββββββ |
-- 147496 ββββββββββββββββββββββββββββββββββββββββ |
-- 147608 ββββββββββββββββββββββββββββββββββββββββ |
-- 147732 ββββββββββββββββββββββββββββββββββββββββ |
-- 147748 ββββββββββββββββββββββββββββββββββββββββ |
-- 147760 ββββββββββββββββββββββββββββββββββββββββ |
-- 147756 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-lenfil: 147464 ββββββββββββββββββββββββββββββββββββββββ |
-- 147524 ββββββββββββββββββββββββββββββββββββββββ |
-- 167176 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 147756 ββββββββββββββββββββββββββββββββββββββββ |
-- 167300 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 147788 ββββββββββββββββββββββββββββββββββββββββ |
-- 167320 ββββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-acc-1: 2872 β |
-- 2920 β |
-- 3048 β |
-- 3192 β |
-- 3228 β |
-- 3180 β |
-- 3196 β |
hs/space-bslc8-acc-2: 2872 β |
-- 2924 β |
-- 3048 β |
-- 3192 β |
-- 3228 β |
-- 3180 β |
-- 3200 β |
hs/space-bslc8-acc-3: 2868 β |
-- 2924 β |
-- 3052 β |
-- 3196 β |
-- 3232 β |
-- 3172 β |
-- 3208 β |
hs/space-bslc8-chunk-1: n/a
-- 1512 β |
-- 1636 β |
-- 65192 ββββββββββββββββββ |
-- 66216 ββββββββββββββββββ |
-- 65204 ββββββββββββββββββ |
-- 66224 ββββββββββββββββββ |
hs/space-bslc8-chunk-2: n/a
-- 1512 β |
-- 1640 β |
-- 65192 ββββββββββββββββββ |
-- 66216 ββββββββββββββββββ |
-- 65204 ββββββββββββββββββ |
-- 66228 ββββββββββββββββββ |
hs/space-bslc8-chunk-3: n/a
-- 1548 β |
-- 1644 β |
-- 75240 βββββββββββββββββββββ |
-- 66208 ββββββββββββββββββ |
-- 75216 βββββββββββββββββββββ |
-- 66224 ββββββββββββββββββ |
hs/space-bslc8-chunk-4: n/a
-- 1512 β |
-- 1636 β |
-- 76188 βββββββββββββββββββββ |
-- 79232 ββββββββββββββββββββββ |
-- 76176 βββββββββββββββββββββ |
-- 79204 ββββββββββββββββββββββ |
hs/space-bslc8-count: 1476 β |
-- 1520 β |
-- 1656 β |
-- 79204 ββββββββββββββββββββββ |
-- 82248 βββββββββββββββββββββββ |
-- 79220 ββββββββββββββββββββββ |
-- 82224 βββββββββββββββββββββββ |
hs/space-bslc8-foldl: 1552 β |
-- 1620 β |
-- 1632 β |
-- 85868 ββββββββββββββββββββββββ |
-- 79224 ββββββββββββββββββββββ |
-- 85852 ββββββββββββββββββββββββ |
-- 79196 ββββββββββββββββββββββ |
hs/space-bslc8-foldlx-1: 1556 β |
-- 1620 β |
-- 1636 β |
-- 85864 ββββββββββββββββββββββββ |
-- 79224 ββββββββββββββββββββββ |
-- 85852 ββββββββββββββββββββββββ |
-- 79196 ββββββββββββββββββββββ |
hs/space-bslc8-foldlx-2: 1552 β |
-- 1616 β |
-- 1636 β |
-- 85868 ββββββββββββββββββββββββ |
-- 79224 ββββββββββββββββββββββ |
-- 85852 ββββββββββββββββββββββββ |
-- 79196 ββββββββββββββββββββββ |
hs/space-bslc8-foldr-1: 169480 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 169544 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 149076 βββββββββββββββββββββββββββββββββββββββββ |
-- 169700 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 149704 βββββββββββββββββββββββββββββββββββββββββ |
-- 169680 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 149680 βββββββββββββββββββββββββββββββββββββββββ |
hs/space-bslc8-foldr-2: 169480 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 169544 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 149076 βββββββββββββββββββββββββββββββββββββββββ |
-- 169700 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 149708 βββββββββββββββββββββββββββββββββββββββββ |
-- 169676 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 149676 βββββββββββββββββββββββββββββββββββββββββ |
hs/space-bslc8-lenfil-1: 38632 βββββββββββ |
-- 38644 βββββββββββ |
-- 1940 β |
-- 109404 ββββββββββββββββββββββββββββββ |
-- 82324 βββββββββββββββββββββββ |
-- 109388 ββββββββββββββββββββββββββββββ |
-- 82304 βββββββββββββββββββββββ |
hs/space-bslc8-lenfil-2: 38628 βββββββββββ |
-- 38648 βββββββββββ |
-- 1940 β |
-- 109404 ββββββββββββββββββββββββββββββ |
-- 82328 βββββββββββββββββββββββ |
-- 109392 ββββββββββββββββββββββββββββββ |
-- 82300 βββββββββββββββββββββββ |
hs/space-bsl---foldlx: 1560 β |
-- 1616 β |
-- 1620 β |
-- 85836 ββββββββββββββββββββββββ |
-- 79184 ββββββββββββββββββββββ |
-- 85864 ββββββββββββββββββββββββ |
-- 79208 ββββββββββββββββββββββ |
hs/space-xxxxx-acc-1: 1568 β |
-- 1636 β |
-- 1636 β |
-- 1904 β |
-- 1904 β |
-- 1900 β |
-- 1904 β |
hs/space-xxxxx-acc-2: 1572 β |
-- 1636 β |
-- 1636 β |
-- 1904 β |
-- 1900 β |
-- 1904 β |
-- 1900 β |
hs/space-xxxxx-foldl: 1572 β |
-- 1636 β |
-- 1636 β |
-- 1900 β |
-- 1904 β |
-- 1904 β |
-- 1904 β |
hs/space-xxxxx-lenfil: 1556 β |
-- 1608 β |
-- 1604 β |
-- 1892 β |
-- 1892 β |
-- 1888 β |
-- 1888 β |
1
0

22 Dec '07
This report compares the hand-tweaked assembly programs with the original
untweaked programs on two vastly different microarchitectures.
This is the command I ran to generate the report:
EXCLUDE='(xxxx|-bsl|chunk|count|acc-[23]|fold|lenfil|^c/)' \
tools/merge.pl \
ghc-armada-thorough-6.9.tgz \
ghc-thorough-6.9.tgz \
> xx
I cut out the memory sections manually since we've already seen them and
inserted a few newlines for grouping purposes.
The first one should note is that not all tweaks are better than the originals!
The second is that the sequence of tweaks is not quite monotonically decreasing
in run-time.
The improvements don't really start until -e on the Athlon64 and -f on both.
Not until then have the load pressure been sufficiently relieved on the L1
cache that the code actually runs faster.
Note also how the two microarchitectures seem to have plateaus in different
places. The Athlon64 seems to have the number 3 built into its silicon (efg,
jkl, mno) which fits very well with what we know about it from AMD's
documentation (the front end splits the instructions up into smaller pieces
which then get distributed to three different "pipelines", each with its own
out-of-order execution engine).
The Pentium III seems to have trouble with the simple MMX code but does very
well with the more advanced MMX code that keeps 8 space counters in a single
MMX register for many iterations. The code I used to add those counters
horizontally is the same in both -q and -r. Perhaps operations on both MMX
and normal registers are slow?
Loop unrolling (-s) doesn't seem to matter, in this case.
-Peter
ls-search
ghc 6.9.20071119
Pentium III (Coppermine)
596.932 MHz
TESTKIND=THOROUGH
SUFFIX=
charybdis
ghc 6.9.20071119
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=
Time (byte counting) std
-------------------- avg dev slack
hs/byte-bs----acc: 3.274 1β° 0.1 βββββββββββββββββββββββββββ |
-- 0.705 7β° 0.1 ββββββββββββββββββββββ |
hand/byte-bs----acc-a: 3.511 1β° 0.0 βββββββββββββββββββββββββββββ |
-- 0.639 2β° 0.2 ββββββββββββββββββββ |
hand/byte-bs----acc-b: 1.998 2β° 0.1 βββββββββββββββββ |
-- 0.414 2β° 0.5 βββββββββββββ |
hand/byte-bs----acc-c: 1.876 2β° 0.1 ββββββββββββββββ |
-- 0.414 3β° 0.2 βββββββββββββ |
hand/byte-bs----acc-d: 1.876 1β° 0.1 ββββββββββββββββ |
-- 0.415 3β° 0.2 βββββββββββββ |
Time (space counting) std
--------------------- avg dev slack
hs/space-bs-c8-acc-1: 4.318 1β° 0.0 ββββββββββββββββββββββββββββββββββββ |
-- 1.145 1β° 0.2 ββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-a: 4.318 1β° 0.0 ββββββββββββββββββββββββββββββββββββ |
-- 1.177 2β° 0.3 βββββββββββββββββββββββββββββββββββββ|
hand/space-bs-c8-acc-1-b: 4.331 1β° 0.0 ββββββββββββββββββββββββββββββββββββ |
-- 1.104 1β° 0.2 ββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-c: 4.492 1β° 0.1 βββββββββββββββββββββββββββββββββββββ|
-- 1.207 1β° 0.3 βββββββββββββββββββββββββββββββββββββ|
hand/space-bs-c8-acc-1-d: 4.354 1β° 0.0 ββββββββββββββββββββββββββββββββββββ |
-- 1.191 1β° 0.2 βββββββββββββββββββββββββββββββββββββ|
hand/space-bs-c8-acc-1-e: 4.424 0β° 0.1 βββββββββββββββββββββββββββββββββββββ|
-- 0.937 1β° 0.2 βββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-f: 4.164 1β° 0.0 βββββββββββββββββββββββββββββββββββ |
-- 0.921 1β° 0.2 βββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-g: 4.309 1β° 0.1 ββββββββββββββββββββββββββββββββββββ |
-- 0.927 2β° 0.4 βββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-h: 4.202 1β° 0.1 βββββββββββββββββββββββββββββββββββ |
-- 0.886 2β° 0.2 ββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-i: 3.820 1β° 0.1 ββββββββββββββββββββββββββββββββ |
-- 0.803 3β° 0.4 βββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-j: 3.472 1β° 0.0 βββββββββββββββββββββββββββββ |
-- 0.706 2β° 0.1 ββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-k: 3.474 1β° 0.0 βββββββββββββββββββββββββββββ |
-- 0.705 1β° 0.0 ββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-l: 3.498 1β° 0.1 βββββββββββββββββββββββββββββ |
-- 0.710 2β° 0.1 ββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-m: 3.397 1β° 0.1 ββββββββββββββββββββββββββββ |
-- 0.642 6β° 0.3 ββββββββββββββββββββ |
hand/space-bs-c8-acc-1-n: 3.373 1β° 0.0 ββββββββββββββββββββββββββββ |
-- 0.636 4β° 0.5 ββββββββββββββββββββ |
hand/space-bs-c8-acc-1-o: 3.118 1β° 0.1 ββββββββββββββββββββββββββ |
-- 0.626 2β° 0.0 ββββββββββββββββββββ |
hand/space-bs-c8-acc-1-p: 2.935 2β° 0.0 βββββββββββββββββββββββββ |
-- 0.565 3β° 0.4 ββββββββββββββββββ |
hand/space-bs-c8-acc-1-q: 3.477 1β° 0.1 βββββββββββββββββββββββββββββ |
-- 0.418 6β° 0.7 βββββββββββββ |
hand/space-bs-c8-acc-1-r: 1.674 1β° 0.1 ββββββββββββββ |
-- 0.334 5β° 0.6 βββββββββββ |
hand/space-bs-c8-acc-1-s: 1.627 1β° 0.2 ββββββββββββββ |
-- 0.335 4β° 0.9 βββββββββββ |
1
0

22 Dec '07
This is what you get if you merge the previous four reports (and filter out the
hand-tweaked assembly benchmarks).
I generated the report with the following command:
EXCLUDE='^hand/' \
tools/merge.pl \
ghc-armada-thorough-6.9.tgz \
ghc-fischer-thorough-6.9.tgz \
ghc-albatross-thorough-6.9.tgz \
ghc-thorough-6.9.tgz \
> xx
This graph shows the memory usage to be (almost) exactly the same. The
difference can easily be explained with slightly different versions of the
C library (there was also a security update or two from Ubuntu in the last
few days - the kernel was definitely updated and I think the C library was
too). We are also talking about two versions of Ubuntu and one (old) version
of SuSE. And we are talking about three not quite identical versions of ghc.
The fischer and albatross runs were made before the inclusion of the three
benchmarks from Don Stewart (hs/space-bs-c8-count, hs/space-bslc8-count, and
hs/space-bslc8-chunk-4) so they are a couple of holes in the graphs.
The speed pattern is more fun. It makes no sense to compare absolute times
here so the graphs were not rescaled. One would naΓ―vely expect the bars to
be about the same when taken in groups of four but that really turns out to be
far from the case!
The explanation is most likely that we are looking at four very different
microarchitectures.
**********
This should hammer home the point that benchmarking on any single machine
isn't enough!
**********
Two probably aren't enough either...
-Peter
ls-search
ghc 6.9.20071119
Pentium III (Coppermine)
596.932 MHz
TESTKIND=THOROUGH
SUFFIX=
Fischer's machine
ghc 6.9.20071124
AMD Duron(tm) processor
1200.089 MHz
TESTKIND=THOROUGH
SUFFIX=
albatross
ghc 6.9.20071208 (or thereabouts)
Genuine Intel(R) CPU T2300 @ 1.66GHz (Core Duo)
1667.000 MHz
TESTKIND=THOROUGH
SUFFIX=
charybdis
ghc 6.9.20071119
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=
Time (byte counting) std
-------------------- avg dev slack
hs/byte-bs----acc: 3.274 1β° 0.1 ββββ |
-- 1.892 21β° 0.4 βββ |
-- 0.918 4β° 0.1 ββββββ |
-- 0.705 7β° 0.1 ββββ |
hs/byte-bs----foldlx: 4.027 0β° 0.0 ββββ |
-- 2.258 3β° 0.1 ββββ |
-- 1.014 2β° 0.2 ββββββ |
-- 1.002 1β° 0.5 ββββββ |
hs/byte-bs----foldrx: 4.184 1β° 0.0 ββββ |
-- 2.933 0β° 0.1 βββββ |
-- 0.999 2β° 0.1 ββββββ |
-- 1.112 2β° 0.1 ββββββ |
hs/byte-bsl---acc: 28.005 10β° 0.0 βββββββββββββββββββββββββββ |
-- 14.319 45β° 0.1 βββββββββββββββββββββ |
-- 1.957 1β° 0.1 ββββββββββββ |
-- 2.595 14β° 0.1 ββββββββββββββ |
hs/byte-xxxxx-acc-1: 25.852 4β° 0.0 βββββββββββββββββββββββββ |
-- 20.915 17β° 4.0 ββββββββββββββββββββββββββββββ |
-- 3.591 2β° 0.1 ββββββββββββββββββββββ |
-- 4.436 5β° 0.0 ββββββββββββββββββββββββ |
hs/byte-xxxxx-acc-2: 25.622 5β° 0.0 βββββββββββββββββββββββββ |
-- 20.691 8β° 0.1 ββββββββββββββββββββββββββββββ |
-- 3.598 4β° 0.1 ββββββββββββββββββββββ |
-- 4.473 8β° 0.0 ββββββββββββββββββββββββ |
hs/byte-xxxxx-foldl: 25.803 5β° 0.0 βββββββββββββββββββββββββ |
-- 20.610 5β° 1.4 ββββββββββββββββββββββββββββββ |
-- 3.594 1β° 0.1 ββββββββββββββββββββββ |
-- 4.412 10β° 0.0 βββββββββββββββββββββββ |
c/byte-getchar: 13.016 0β° 0.0 βββββββββββββ |
-- 9.042 0β° 0.1 βββββββββββββ |
-- 3.761 2β° 0.1 βββββββββββββββββββββββ |
-- 2.422 27β° 0.1 βββββββββββββ |
c/byte-getchar-u: 1.662 1β° 0.1 ββ |
-- 1.314 3β° 0.2 ββ |
-- 0.719 2β° 0.3 βββββ |
-- 0.632 3β° 0.3 ββββ |
c/byte-4k: 0.543 2β° 0.2 β |
-- 0.419 5β° 0.5 β |
-- 0.101 10β° 3.1 β |
-- 0.094 26β° 2.2 β |
Memory: Peak
------- KB
hs/byte-bs----acc: 147752 ββββββββββββββββββββββββββββββββββββββββ |
-- 147492 ββββββββββββββββββββββββββββββββββββββββ |
-- 147784 βββββββββββββββββββββββββββββββββββββββββ |
-- 147752 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldlx: 147756 ββββββββββββββββββββββββββββββββββββββββ |
-- 147492 ββββββββββββββββββββββββββββββββββββββββ |
-- 147812 βββββββββββββββββββββββββββββββββββββββββ |
-- 147748 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldrx: 147760 ββββββββββββββββββββββββββββββββββββββββ |
-- 147488 ββββββββββββββββββββββββββββββββββββββββ |
-- 147788 βββββββββββββββββββββββββββββββββββββββββ |
-- 147744 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bsl---acc: 3180 β |
-- 2896 β |
-- 3228 β |
-- 3172 β |
hs/byte-xxxxx-acc-1: 1916 β |
-- 1612 β |
-- 1904 β |
-- 1904 β |
hs/byte-xxxxx-acc-2: 1912 β |
-- 1612 β |
-- 1908 β |
-- 1904 β |
hs/byte-xxxxx-foldl: 1912 β |
-- 1612 β |
-- 1908 β |
-- 1900 β |
c/byte-getchar: 436 β |
-- 384 β |
-- 432 β |
-- 440 β |
c/byte-getchar-u: 432 β |
-- 384 β |
-- 440 β |
-- 440 β |
c/byte-4k: 436 β |
-- 380 β |
-- 436 β |
-- 440 β |
Time (space counting) std
--------------------- avg dev slack
hs/space-bs-c8-acc-1: 4.318 1β° 0.0 ββββ |
-- 2.467 1β° 0.3 ββββ |
-- 1.313 0β° 0.2 ββββββββ |
-- 1.145 1β° 0.2 ββββββ |
hs/space-bs-c8-count: 3.118 1β° 0.1 βββ |
-- n/a
-- n/a
-- 0.521 1β° 0.2 βββ |
hs/space-bs-c8-foldlx-1: 4.631 1β° 0.0 βββββ |
-- 2.585 2β° 0.1 ββββ |
-- 1.326 1β° 0.1 ββββββββ |
-- 1.221 1β° 0.1 βββββββ |
hs/space-bs-c8-foldlx-2: 4.632 1β° 0.0 βββββ |
-- 2.576 2β° 0.3 ββββ |
-- 1.328 1β° 0.1 ββββββββ |
-- 1.219 2β° 0.2 βββββββ |
hs/space-bs-c8-foldrx: 4.678 0β° 0.0 βββββ |
-- 2.982 8β° 2.3 βββββ |
-- 1.128 1β° 0.2 βββββββ |
-- 1.172 2β° 0.3 βββββββ |
hs/space-bs-c8-lenfil: 4.634 1β° 0.1 βββββ |
-- 2.599 1β° 0.2 ββββ |
-- 1.327 2β° 0.2 ββββββββ |
-- 1.223 1β° 0.2 βββββββ |
hs/space-bslc8-acc-1: 32.733 7β° 0.0 βββββββββββββββββββββββββββββββ |
-- 15.228 8β° 0.1 ββββββββββββββββββββββ |
-- 3.002 1β° 0.1 ββββββββββββββββββ |
-- 3.388 10β° 0.1 ββββββββββββββββββ |
hs/space-bslc8-acc-2: 33.112 11β° 0.0 ββββββββββββββββββββββββββββββββ |
-- 15.855 38β° 0.0 βββββββββββββββββββββββ |
-- 3.010 2β° 0.0 ββββββββββββββββββ |
-- 3.386 5β° 0.1 ββββββββββββββββββ |
hs/space-bslc8-acc-3: 30.294 12β° 0.0 βββββββββββββββββββββββββββββ |
-- 14.980 14β° 0.0 ββββββββββββββββββββββ |
-- 2.586 1β° 0.1 ββββββββββββββββ |
-- 2.832 4β° 0.1 βββββββββββββββ |
hs/space-bslc8-chunk-1: 3.888 0β° 0.1 ββββ |
-- 2.443 2β° 0.2 ββββ |
-- 1.192 0β° 0.0 βββββββ |
-- 1.094 0β° 0.3 ββββββ |
hs/space-bslc8-chunk-2: 3.887 1β° 0.0 ββββ |
-- 2.449 1β° 0.3 ββββ |
-- 1.189 0β° 0.1 βββββββ |
-- 1.094 1β° 0.3 ββββββ |
hs/space-bslc8-chunk-3: 3.881 0β° 0.1 ββββ |
-- 2.534 3β° 0.3 ββββ |
-- 1.272 1β° 0.2 ββββββββ |
-- 1.087 1β° 0.3 ββββββ |
hs/space-bslc8-chunk-4: 3.910 1β° 0.0 ββββ |
-- n/a
-- n/a
-- 1.099 0β° 0.3 ββββββ |
hs/space-bslc8-count: 2.355 1β° 0.1 βββ |
-- n/a
-- n/a
-- 0.477 2β° 0.4 βββ |
hs/space-bslc8-foldl: 4.674 0β° 0.0 βββββ |
-- 2.938 1β° 0.2 βββββ |
-- 1.517 0β° 0.1 βββββββββ |
-- 1.458 1β° 0.3 ββββββββ |
hs/space-bslc8-foldlx-1: 4.676 0β° 0.0 βββββ |
-- 2.928 1β° 0.0 βββββ |
-- 1.516 0β° 0.0 βββββββββ |
-- 1.458 0β° 0.1 ββββββββ |
hs/space-bslc8-foldlx-2: 4.676 0β° 0.0 βββββ |
-- 2.937 2β° 0.2 βββββ |
-- 1.511 0β° 0.0 βββββββββ |
-- 1.457 1β° 0.1 ββββββββ |
hs/space-bslc8-foldr-1: 5.222 0β° 0.0 βββββ |
-- 4.043 6β° 0.1 ββββββ |
-- 1.205 1β° 0.2 ββββββββ |
-- 1.312 1β° 0.2 βββββββ |
hs/space-bslc8-foldr-2: 5.224 1β° 0.1 βββββ |
-- 4.007 4β° 0.1 ββββββ |
-- 1.202 3β° 0.1 ββββββββ |
-- 1.315 1β° 0.2 βββββββ |
hs/space-bslc8-lenfil-1: 4.712 1β° 0.0 βββββ |
-- 3.240 1β° 0.2 βββββ |
-- 1.400 0β° 0.0 βββββββββ |
-- 1.323 1β° 0.1 βββββββ |
hs/space-bslc8-lenfil-2: 4.714 1β° 0.0 βββββ |
-- 3.236 1β° 0.2 βββββ |
-- 1.396 0β° 0.0 βββββββββ |
-- 1.325 1β° 0.1 βββββββ |
hs/space-bsl---foldlx: 4.522 0β° 0.1 βββββ |
-- 2.821 1β° 0.1 ββββ |
-- 1.476 1β° 0.1 βββββββββ |
-- 1.391 1β° 0.1 ββββββββ |
hs/space-xxxxx-acc-1: 27.529 6β° 0.0 ββββββββββββββββββββββββββ |
-- 21.002 4β° 0.1 ββββββββββββββββββββββββββββββ |
-- 4.245 1β° 0.0 βββββββββββββββββββββββββ |
-- 4.991 1β° 0.1 ββββββββββββββββββββββββββ |
hs/space-xxxxx-acc-2: 27.200 3β° 0.0 ββββββββββββββββββββββββββ |
-- 21.270 22β° 4.7 βββββββββββββββββββββββββββββββ |
-- 4.241 2β° 0.1 βββββββββββββββββββββββββ |
-- 4.985 1β° 0.0 ββββββββββββββββββββββββββ |
hs/space-xxxxx-foldl: 27.436 8β° 0.0 ββββββββββββββββββββββββββ |
-- 20.934 1β° 0.1 ββββββββββββββββββββββββββββββ |
-- 4.239 2β° 0.1 βββββββββββββββββββββββββ |
-- 5.035 2β° 0.1 βββββββββββββββββββββββββββ |
hs/space-xxxxx-lenfil: 39.343 3β° 0.0 βββββββββββββββββββββββββββββββββββββ|
-- 25.915 3β° 0.0 βββββββββββββββββββββββββββββββββββββ|
-- 6.287 2β° 0.0 βββββββββββββββββββββββββββββββββββββ|
-- 7.106 8β° 0.1 βββββββββββββββββββββββββββββββββββββ|
c/space-getchar: 13.268 0β° 0.0 βββββββββββββ |
-- 9.354 0β° 0.0 ββββββββββββββ |
-- 4.031 18β° 0.0 ββββββββββββββββββββββββ |
-- 2.465 15β° 0.1 βββββββββββββ |
c/space-getchar-u: 2.170 0β° 0.1 ββ |
-- 1.676 2β° 0.2 βββ |
-- 0.609 2β° 0.7 ββββ |
-- 0.631 1β° 0.5 ββββ |
c/space-4k: 1.815 1β° 0.1 ββ |
-- 1.293 2β° 0.5 ββ |
-- 0.465 2β° 0.6 βββ |
-- 0.319 3β° 0.6 ββ |
c/space-megabuf: 2.763 2β° 0.1 βββ |
-- 1.830 3β° 0.5 βββ |
-- 0.613 1β° 0.3 ββββ |
-- 0.515 3β° 0.4 βββ |
c/space-getwchar: 15.105 29β° 0.0 βββββββββββββββ |
-- 14.721 1β° 0.1 βββββββββββββββββββββ |
-- 4.584 1β° 0.1 βββββββββββββββββββββββββββ |
-- 3.956 6β° 0.1 βββββββββββββββββββββ |
c/space-getwchar-u: 8.979 1β° 0.0 βββββββββ |
-- 4.814 0β° 0.0 βββββββ |
-- 2.437 0β° 0.1 βββββββββββββββ |
-- 2.217 1β° 0.1 ββββββββββββ |
c/space-32k: 1.786 9β° 0.1 ββ |
-- 1.276 2β° 0.6 ββ |
-- 0.445 1β° 0.5 βββ |
-- 0.303 3β° 1.0 ββ |
c/space-32k-8: 1.777 1β° 0.1 ββ |
-- 1.275 2β° 0.2 ββ |
-- 0.448 0β° 0.0 βββ |
-- 0.304 2β° 0.3 ββ |
Memory: Peak
------- KB
hs/space-bs-c8-acc-1: 147748 ββββββββββββββββββββββββββββββββββββββββ |
-- 147488 ββββββββββββββββββββββββββββββββββββββββ |
-- 147772 ββββββββββββββββββββββββββββββββββββββββ |
-- 147736 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-count: 147760 ββββββββββββββββββββββββββββββββββββββββ |
-- n/a
-- n/a
-- 147744 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 147760 ββββββββββββββββββββββββββββββββββββββββ |
-- 147492 ββββββββββββββββββββββββββββββββββββββββ |
-- 147800 βββββββββββββββββββββββββββββββββββββββββ |
-- 147756 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 147764 ββββββββββββββββββββββββββββββββββββββββ |
-- 147492 ββββββββββββββββββββββββββββββββββββββββ |
-- 147804 βββββββββββββββββββββββββββββββββββββββββ |
-- 147752 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldrx: 147748 ββββββββββββββββββββββββββββββββββββββββ |
-- 147488 ββββββββββββββββββββββββββββββββββββββββ |
-- 147776 ββββββββββββββββββββββββββββββββββββββββ |
-- 147732 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-lenfil: 147764 ββββββββββββββββββββββββββββββββββββββββ |
-- 147492 ββββββββββββββββββββββββββββββββββββββββ |
-- 147796 βββββββββββββββββββββββββββββββββββββββββ |
-- 147756 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bslc8-acc-1: 3196 β |
-- 2896 β |
-- 3192 β |
-- 3192 β |
hs/space-bslc8-acc-2: 3200 β |
-- 2896 β |
-- 3192 β |
-- 3192 β |
hs/space-bslc8-acc-3: 3204 β |
-- 2896 β |
-- 3188 β |
-- 3196 β |
hs/space-bslc8-chunk-1: 65204 ββββββββββββββββββ |
-- 65892 ββββββββββββββββββ |
-- 65208 ββββββββββββββββββ |
-- 65192 ββββββββββββββββββ |
hs/space-bslc8-chunk-2: 65200 ββββββββββββββββββ |
-- 65892 ββββββββββββββββββ |
-- 65212 ββββββββββββββββββ |
-- 65192 ββββββββββββββββββ |
hs/space-bslc8-chunk-3: 75248 βββββββββββββββββββββ |
-- 76472 βββββββββββββββββββββ |
-- 75232 βββββββββββββββββββββ |
-- 75240 βββββββββββββββββββββ |
hs/space-bslc8-chunk-4: 76204 βββββββββββββββββββββ |
-- n/a
-- n/a
-- 76188 βββββββββββββββββββββ |
hs/space-bslc8-count: 79224 ββββββββββββββββββββββ |
-- n/a
-- n/a
-- 79204 ββββββββββββββββββββββ |
hs/space-bslc8-foldl: 85880 ββββββββββββββββββββββββ |
-- 86772 ββββββββββββββββββββββββ |
-- 85856 ββββββββββββββββββββββββ |
-- 85868 ββββββββββββββββββββββββ |
hs/space-bslc8-foldlx-1: 85880 ββββββββββββββββββββββββ |
-- 86772 ββββββββββββββββββββββββ |
-- 85852 ββββββββββββββββββββββββ |
-- 85864 ββββββββββββββββββββββββ |
hs/space-bslc8-foldlx-2: 85880 ββββββββββββββββββββββββ |
-- 86772 ββββββββββββββββββββββββ |
-- 85856 ββββββββββββββββββββββββ |
-- 85868 ββββββββββββββββββββββββ |
hs/space-bslc8-foldr-1: 169704 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 169360 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 169684 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 169700 ββββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-foldr-2: 169700 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 169360 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 169684 ββββββββββββββββββββββββββββββββββββββββββββββ|
-- 169700 ββββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-lenfil-1: 109408 ββββββββββββββββββββββββββββββ |
-- 110704 βββββββββββββββββββββββββββββββ |
-- 109404 ββββββββββββββββββββββββββββββ |
-- 109404 ββββββββββββββββββββββββββββββ |
hs/space-bslc8-lenfil-2: 109404 ββββββββββββββββββββββββββββββ |
-- 110704 βββββββββββββββββββββββββββββββ |
-- 109404 ββββββββββββββββββββββββββββββ |
-- 109404 ββββββββββββββββββββββββββββββ |
hs/space-bsl---foldlx: 85844 ββββββββββββββββββββββββ |
-- 86776 ββββββββββββββββββββββββ |
-- 85880 ββββββββββββββββββββββββ |
-- 85836 ββββββββββββββββββββββββ |
hs/space-xxxxx-acc-1: 1912 β |
-- 1612 β |
-- 1916 β |
-- 1904 β |
hs/space-xxxxx-acc-2: 1912 β |
-- 1612 β |
-- 1916 β |
-- 1904 β |
hs/space-xxxxx-foldl: 1912 β |
-- 1612 β |
-- 1916 β |
-- 1900 β |
hs/space-xxxxx-lenfil: 1904 β |
-- 1588 β |
-- 1892 β |
-- 1892 β |
c/space-getchar: 436 β |
-- 384 β |
-- 436 β |
-- 444 β |
c/space-getchar-u: 436 β |
-- 384 β |
-- 436 β |
-- 444 β |
c/space-4k: 472 β |
-- 412 β |
-- 468 β |
-- 468 β |
c/space-megabuf: 146968 ββββββββββββββββββββββββββββββββββββββββ |
-- 146904 ββββββββββββββββββββββββββββββββββββββββ |
-- 146968 ββββββββββββββββββββββββββββββββββββββββ |
-- 146968 ββββββββββββββββββββββββββββββββββββββββ |
c/space-getwchar: 484 β |
-- 440 β |
-- 484 β |
-- 496 β |
c/space-getwchar-u: 484 β |
-- 440 β |
-- 480 β |
-- 500 β |
c/space-32k: 500 β |
-- 436 β |
-- 496 β |
-- 496 β |
c/space-32k-8: 496 β |
-- 436 β |
-- 500 β |
-- 500 β |
1
0
This set of measurements was captured by me on my slightly old noname 2GHz
Athlon64 3000+ (in 32-bit mode on a 32-bit kernel). It has 1GB RAM and
runs Ubuntu 7.04.
The benchmarks were run two days ago (2007-12-19) using ghc 6.9.20071119 in
runlevel 1 (single-user mode). I did leave the network cable in, which might
have produced some interrupts (not very likely -- 1) why would it run in
promiscuous mode and 2) who broadcasts apart from my wired/wireless access
point which broadcasts a packet per second?). Still, the quality of the
timings proved to be good, with a standard deviation of at most 2.7% of the
average run-time.
This run includes the hand-tweaked assembly benchmarks (as does the Pentium III
run in the previous email).
Note how much the assembler tweaks help!
-Peter
charybdis
ghc 6.9.20071119
AMD Athlon(tm) 64 Processor 3000+
2009.160 MHz
TESTKIND=THOROUGH
SUFFIX=
Time (byte counting) std
-------------------- avg dev slack
hs/byte-bs----acc: 0.705 7β° 0.1 ββββ |
hs/byte-bs----foldlx: 1.002 1β° 0.5 ββββββ |
hs/byte-bs----foldrx: 1.112 2β° 0.1 ββββββ |
hs/byte-bsl---acc: 2.595 14β° 0.1 ββββββββββββββ |
hs/byte-xxxxx-acc-1: 4.436 5β° 0.0 ββββββββββββββββββββββββ |
hs/byte-xxxxx-acc-2: 4.473 8β° 0.0 ββββββββββββββββββββββββ |
hs/byte-xxxxx-foldl: 4.412 10β° 0.0 βββββββββββββββββββββββ |
hand/byte-bs----acc-a: 0.639 2β° 0.2 ββββ |
hand/byte-bs----acc-b: 0.414 2β° 0.5 βββ |
hand/byte-bs----acc-c: 0.414 3β° 0.2 βββ |
hand/byte-bs----acc-d: 0.415 3β° 0.2 βββ |
c/byte-getchar: 2.422 27β° 0.1 βββββββββββββ |
c/byte-getchar-u: 0.632 3β° 0.3 ββββ |
c/byte-4k: 0.094 26β° 2.2 β |
Memory: Peak
------- KB
hs/byte-bs----acc: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldlx: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldrx: 147744 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bsl---acc: 3172 β |
hs/byte-xxxxx-acc-1: 1904 β |
hs/byte-xxxxx-acc-2: 1904 β |
hs/byte-xxxxx-foldl: 1900 β |
hand/byte-bs----acc-a: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/byte-bs----acc-b: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/byte-bs----acc-c: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/byte-bs----acc-d: 147760 ββββββββββββββββββββββββββββββββββββββββ |
c/byte-getchar: 440 β |
c/byte-getchar-u: 440 β |
c/byte-4k: 440 β |
Time (space counting) std
--------------------- avg dev slack
hs/space-bs-c8-acc-1: 1.145 1β° 0.2 ββββββ |
hs/space-bs-c8-count: 0.521 1β° 0.2 βββ |
hs/space-bs-c8-foldlx-1: 1.221 1β° 0.1 βββββββ |
hs/space-bs-c8-foldlx-2: 1.219 2β° 0.2 βββββββ |
hs/space-bs-c8-foldrx: 1.172 2β° 0.3 βββββββ |
hs/space-bs-c8-lenfil: 1.223 1β° 0.2 βββββββ |
hs/space-bslc8-acc-1: 3.388 10β° 0.1 ββββββββββββββββββ |
hs/space-bslc8-acc-2: 3.386 5β° 0.1 ββββββββββββββββββ |
hs/space-bslc8-acc-3: 2.832 4β° 0.1 βββββββββββββββ |
hs/space-bslc8-chunk-1: 1.094 0β° 0.3 ββββββ |
hs/space-bslc8-chunk-2: 1.094 1β° 0.3 ββββββ |
hs/space-bslc8-chunk-3: 1.087 1β° 0.3 ββββββ |
hs/space-bslc8-chunk-4: 1.099 0β° 0.3 ββββββ |
hs/space-bslc8-count: 0.477 2β° 0.4 βββ |
hs/space-bslc8-foldl: 1.458 1β° 0.3 ββββββββ |
hs/space-bslc8-foldlx-1: 1.458 0β° 0.1 ββββββββ |
hs/space-bslc8-foldlx-2: 1.457 1β° 0.1 ββββββββ |
hs/space-bslc8-foldr-1: 1.312 1β° 0.2 βββββββ |
hs/space-bslc8-foldr-2: 1.315 1β° 0.2 βββββββ |
hs/space-bslc8-lenfil-1: 1.323 1β° 0.1 βββββββ |
hs/space-bslc8-lenfil-2: 1.325 1β° 0.1 βββββββ |
hs/space-bsl---foldlx: 1.391 1β° 0.1 ββββββββ |
hs/space-xxxxx-acc-1: 4.991 1β° 0.1 ββββββββββββββββββββββββββ |
hs/space-xxxxx-acc-2: 4.985 1β° 0.0 ββββββββββββββββββββββββββ |
hs/space-xxxxx-foldl: 5.035 2β° 0.1 βββββββββββββββββββββββββββ |
hs/space-xxxxx-lenfil: 7.106 8β° 0.1 βββββββββββββββββββββββββββββββββββββ|
hand/space-bs-c8-acc-1-a: 1.177 2β° 0.3 βββββββ |
hand/space-bs-c8-acc-1-b: 1.104 1β° 0.2 ββββββ |
hand/space-bs-c8-acc-1-c: 1.207 1β° 0.3 βββββββ |
hand/space-bs-c8-acc-1-d: 1.191 1β° 0.2 βββββββ |
hand/space-bs-c8-acc-1-e: 0.937 1β° 0.2 βββββ |
hand/space-bs-c8-acc-1-f: 0.921 1β° 0.2 βββββ |
hand/space-bs-c8-acc-1-g: 0.927 2β° 0.4 βββββ |
hand/space-bs-c8-acc-1-h: 0.886 2β° 0.2 βββββ |
hand/space-bs-c8-acc-1-i: 0.803 3β° 0.4 βββββ |
hand/space-bs-c8-acc-1-j: 0.706 2β° 0.1 ββββ |
hand/space-bs-c8-acc-1-k: 0.705 1β° 0.0 ββββ |
hand/space-bs-c8-acc-1-l: 0.710 2β° 0.1 ββββ |
hand/space-bs-c8-acc-1-m: 0.642 6β° 0.3 ββββ |
hand/space-bs-c8-acc-1-n: 0.636 4β° 0.5 ββββ |
hand/space-bs-c8-acc-1-o: 0.626 2β° 0.0 ββββ |
hand/space-bs-c8-acc-1-p: 0.565 3β° 0.4 βββ |
hand/space-bs-c8-acc-1-q: 0.418 6β° 0.7 βββ |
hand/space-bs-c8-acc-1-r: 0.334 5β° 0.6 ββ |
hand/space-bs-c8-acc-1-s: 0.335 4β° 0.9 ββ |
c/space-getchar: 2.465 15β° 0.1 βββββββββββββ |
c/space-getchar-u: 0.631 1β° 0.5 ββββ |
c/space-4k: 0.319 3β° 0.6 ββ |
c/space-megabuf: 0.515 3β° 0.4 βββ |
c/space-getwchar: 3.956 6β° 0.1 βββββββββββββββββββββ |
c/space-getwchar-u: 2.217 1β° 0.1 ββββββββββββ |
c/space-32k: 0.303 3β° 1.0 ββ |
c/space-32k-8: 0.304 2β° 0.3 ββ |
Memory: Peak
------- KB
hs/space-bs-c8-acc-1: 147736 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-count: 147744 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 147756 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldrx: 147732 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-lenfil: 147756 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bslc8-acc-1: 3192 β |
hs/space-bslc8-acc-2: 3192 β |
hs/space-bslc8-acc-3: 3196 β |
hs/space-bslc8-chunk-1: 65192 ββββββββββββββββββ |
hs/space-bslc8-chunk-2: 65192 ββββββββββββββββββ |
hs/space-bslc8-chunk-3: 75240 ββββββββββββββββββββ |
hs/space-bslc8-chunk-4: 76188 βββββββββββββββββββββ |
hs/space-bslc8-count: 79204 βββββββββββββββββββββ |
hs/space-bslc8-foldl: 85868 βββββββββββββββββββββββ |
hs/space-bslc8-foldlx-1: 85864 βββββββββββββββββββββββ |
hs/space-bslc8-foldlx-2: 85868 βββββββββββββββββββββββ |
hs/space-bslc8-foldr-1: 169700 βββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-foldr-2: 169700 βββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-lenfil-1: 109404 βββββββββββββββββββββββββββββ |
hs/space-bslc8-lenfil-2: 109404 βββββββββββββββββββββββββββββ |
hs/space-bsl---foldlx: 85836 βββββββββββββββββββββββ |
hs/space-xxxxx-acc-1: 1904 β |
hs/space-xxxxx-acc-2: 1904 β |
hs/space-xxxxx-foldl: 1900 β |
hs/space-xxxxx-lenfil: 1892 β |
hand/space-bs-c8-acc-1-a: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-b: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-c: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-d: 147756 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-e: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-f: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-g: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-h: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-i: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-j: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-k: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-l: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-m: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-n: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-o: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-p: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-q: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-r: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-s: 147744 ββββββββββββββββββββββββββββββββββββββββ |
c/space-getchar: 444 β |
c/space-getchar-u: 444 β |
c/space-4k: 468 β |
c/space-megabuf: 146968 βββββββββββββββββββββββββββββββββββββββ |
c/space-getwchar: 496 β |
c/space-getwchar-u: 500 β |
c/space-32k: 496 β |
c/space-32k-8: 500 β |
1
0
This set of measurements was captured by me on my old Compaq Armada E500 from
around the year 2000. It has an Intel Coppermine Pentium III running at 600
MHz with 384 MB RAM and running Ubuntu 7.10.
The benchmarks were run today (2007-12-21) using ghc 6.9.20071119 (freshly
downloaded and reinstalled) in runlevel 1 (single-user mode). I did leave
the wireless card in, which might have produced some interrupts. Still, the
quality of the timings proved to be good, with a standard deviation of at most
1.2% of the average run-time.
This run includes the hand-tweaked assembly benchmarks (as does the Athlon64
run in the next email).
Note how much less the assembler tweaks help here (until one gets down to the
wicked MMX tweaks) compared to the situation on the Athlon64 in the next mail.
They still help, though.
-Peter
ls-search
ghc 6.9.20071119
Pentium III (Coppermine)
596.932 MHz
TESTKIND=THOROUGH
SUFFIX=
Time (byte counting) std
-------------------- avg dev slack
hs/byte-bs----acc: 3.274 1β° 0.1 βββ |
hs/byte-bs----foldlx: 4.027 0β° 0.0 ββββ |
hs/byte-bs----foldrx: 4.184 1β° 0.0 ββββ |
hs/byte-bsl---acc: 28.005 10β° 0.0 ββββββββββββββββββββββββββ |
hs/byte-xxxxx-acc-1: 25.852 4β° 0.0 ββββββββββββββββββββββββ |
hs/byte-xxxxx-acc-2: 25.622 5β° 0.0 ββββββββββββββββββββββββ |
hs/byte-xxxxx-foldl: 25.803 5β° 0.0 ββββββββββββββββββββββββ |
hand/byte-bs----acc-a: 3.511 1β° 0.0 ββββ |
hand/byte-bs----acc-b: 1.998 2β° 0.1 ββ |
hand/byte-bs----acc-c: 1.876 2β° 0.1 ββ |
hand/byte-bs----acc-d: 1.876 1β° 0.1 ββ |
c/byte-getchar: 13.016 0β° 0.0 ββββββββββββ |
c/byte-getchar-u: 1.662 1β° 0.1 ββ |
c/byte-4k: 0.543 2β° 0.2 β |
Memory: Peak
------- KB
hs/byte-bs----acc: 147752 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldlx: 147756 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldrx: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bsl---acc: 3180 β |
hs/byte-xxxxx-acc-1: 1916 β |
hs/byte-xxxxx-acc-2: 1912 β |
hs/byte-xxxxx-foldl: 1912 β |
hand/byte-bs----acc-a: 147772 ββββββββββββββββββββββββββββββββββββββββ |
hand/byte-bs----acc-b: 147776 ββββββββββββββββββββββββββββββββββββββββ |
hand/byte-bs----acc-c: 147772 ββββββββββββββββββββββββββββββββββββββββ |
hand/byte-bs----acc-d: 147776 ββββββββββββββββββββββββββββββββββββββββ |
c/byte-getchar: 436 β |
c/byte-getchar-u: 432 β |
c/byte-4k: 436 β |
Time (space counting) std
--------------------- avg dev slack
hs/space-bs-c8-acc-1: 4.318 1β° 0.0 ββββ |
hs/space-bs-c8-count: 3.118 1β° 0.1 βββ |
hs/space-bs-c8-foldlx-1: 4.631 1β° 0.0 βββββ |
hs/space-bs-c8-foldlx-2: 4.632 1β° 0.0 βββββ |
hs/space-bs-c8-foldrx: 4.678 0β° 0.0 βββββ |
hs/space-bs-c8-lenfil: 4.634 1β° 0.1 βββββ |
hs/space-bslc8-acc-1: 32.733 7β° 0.0 ββββββββββββββββββββββββββββββ |
hs/space-bslc8-acc-2: 33.112 11β° 0.0 βββββββββββββββββββββββββββββββ |
hs/space-bslc8-acc-3: 30.294 12β° 0.0 ββββββββββββββββββββββββββββ |
hs/space-bslc8-chunk-1: 3.888 0β° 0.1 ββββ |
hs/space-bslc8-chunk-2: 3.887 1β° 0.0 ββββ |
hs/space-bslc8-chunk-3: 3.881 0β° 0.1 ββββ |
hs/space-bslc8-chunk-4: 3.910 1β° 0.0 ββββ |
hs/space-bslc8-count: 2.355 1β° 0.1 βββ |
hs/space-bslc8-foldl: 4.674 0β° 0.0 βββββ |
hs/space-bslc8-foldlx-1: 4.676 0β° 0.0 βββββ |
hs/space-bslc8-foldlx-2: 4.676 0β° 0.0 βββββ |
hs/space-bslc8-foldr-1: 5.222 0β° 0.0 βββββ |
hs/space-bslc8-foldr-2: 5.224 1β° 0.1 βββββ |
hs/space-bslc8-lenfil-1: 4.712 1β° 0.0 βββββ |
hs/space-bslc8-lenfil-2: 4.714 1β° 0.0 βββββ |
hs/space-bsl---foldlx: 4.522 0β° 0.1 βββββ |
hs/space-xxxxx-acc-1: 27.529 6β° 0.0 ββββββββββββββββββββββββββ |
hs/space-xxxxx-acc-2: 27.200 3β° 0.0 βββββββββββββββββββββββββ |
hs/space-xxxxx-foldl: 27.436 8β° 0.0 ββββββββββββββββββββββββββ |
hs/space-xxxxx-lenfil: 39.343 3β° 0.0 ββββββββββββββββββββββββββββββββββββ|
hand/space-bs-c8-acc-1-a: 4.318 1β° 0.0 ββββ |
hand/space-bs-c8-acc-1-b: 4.331 1β° 0.0 ββββ |
hand/space-bs-c8-acc-1-c: 4.492 1β° 0.1 βββββ |
hand/space-bs-c8-acc-1-d: 4.354 1β° 0.0 ββββ |
hand/space-bs-c8-acc-1-e: 4.424 0β° 0.1 ββββ |
hand/space-bs-c8-acc-1-f: 4.164 1β° 0.0 ββββ |
hand/space-bs-c8-acc-1-g: 4.309 1β° 0.1 ββββ |
hand/space-bs-c8-acc-1-h: 4.202 1β° 0.1 ββββ |
hand/space-bs-c8-acc-1-i: 3.820 1β° 0.1 ββββ |
hand/space-bs-c8-acc-1-j: 3.472 1β° 0.0 ββββ |
hand/space-bs-c8-acc-1-k: 3.474 1β° 0.0 ββββ |
hand/space-bs-c8-acc-1-l: 3.498 1β° 0.1 ββββ |
hand/space-bs-c8-acc-1-m: 3.397 1β° 0.1 ββββ |
hand/space-bs-c8-acc-1-n: 3.373 1β° 0.0 ββββ |
hand/space-bs-c8-acc-1-o: 3.118 1β° 0.1 βββ |
hand/space-bs-c8-acc-1-p: 2.935 2β° 0.0 βββ |
hand/space-bs-c8-acc-1-q: 3.477 1β° 0.1 ββββ |
hand/space-bs-c8-acc-1-r: 1.674 1β° 0.1 ββ |
hand/space-bs-c8-acc-1-s: 1.627 1β° 0.2 ββ |
c/space-getchar: 13.268 0β° 0.0 βββββββββββββ |
c/space-getchar-u: 2.170 0β° 0.1 ββ |
c/space-4k: 1.815 1β° 0.1 ββ |
c/space-megabuf: 2.763 2β° 0.1 βββ |
c/space-getwchar: 15.105 29β° 0.0 ββββββββββββββ |
c/space-getwchar-u: 8.979 1β° 0.0 βββββββββ |
c/space-32k: 1.786 9β° 0.1 ββ |
c/space-32k-8: 1.777 1β° 0.1 ββ |
Memory: Peak
------- KB
hs/space-bs-c8-acc-1: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-count: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldrx: 147748 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-lenfil: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bslc8-acc-1: 3196 β |
hs/space-bslc8-acc-2: 3200 β |
hs/space-bslc8-acc-3: 3204 β |
hs/space-bslc8-chunk-1: 65204 ββββββββββββββββββ |
hs/space-bslc8-chunk-2: 65200 ββββββββββββββββββ |
hs/space-bslc8-chunk-3: 75248 ββββββββββββββββββββ |
hs/space-bslc8-chunk-4: 76204 βββββββββββββββββββββ |
hs/space-bslc8-count: 79224 βββββββββββββββββββββ |
hs/space-bslc8-foldl: 85880 βββββββββββββββββββββββ |
hs/space-bslc8-foldlx-1: 85880 βββββββββββββββββββββββ |
hs/space-bslc8-foldlx-2: 85880 βββββββββββββββββββββββ |
hs/space-bslc8-foldr-1: 169704 βββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-foldr-2: 169700 βββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-lenfil-1: 109408 βββββββββββββββββββββββββββββ |
hs/space-bslc8-lenfil-2: 109404 βββββββββββββββββββββββββββββ |
hs/space-bsl---foldlx: 85844 βββββββββββββββββββββββ |
hs/space-xxxxx-acc-1: 1912 β |
hs/space-xxxxx-acc-2: 1912 β |
hs/space-xxxxx-foldl: 1912 β |
hs/space-xxxxx-lenfil: 1904 β |
hand/space-bs-c8-acc-1-a: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-b: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-c: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-d: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-e: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-f: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-g: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-h: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-i: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-j: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-k: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-l: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-m: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-n: 147764 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-o: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-p: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-q: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-r: 147760 ββββββββββββββββββββββββββββββββββββββββ |
hand/space-bs-c8-acc-1-s: 147760 ββββββββββββββββββββββββββββββββββββββββ |
c/space-getchar: 436 β |
c/space-getchar-u: 436 β |
c/space-4k: 472 β |
c/space-megabuf: 146968 βββββββββββββββββββββββββββββββββββββββ |
c/space-getwchar: 484 β |
c/space-getwchar-u: 484 β |
c/space-32k: 500 β |
c/space-32k-8: 496 β |
1
0
This set of measurements was captured by me on a friend's machine at his place,
namely an Intel Core Duo laptop running Ubuntu 7.10.
The benchmarks were run on 2007-12-09 using ghc 6.9.20071208 (approx) in
runlevel 1 (single-user mode).
I used an early version of the benchmark suite which didn't capture the exact
ghc version used and an early version of my ghc install scripts that didn't
try for a precise version. It ran on what was ghc head at the time.
-Peter
albatross
ghc 6.9.20071208 (or thereabouts)
Genuine Intel(R) CPU T2300 @ 1.66GHz (Core Duo)
1667.000 MHz
TESTKIND=THOROUGH
SUFFIX=
Time (byte counting) std
-------------------- avg dev slack
hs/byte-bs----acc: 0.918 4β° 0.1 ββββββ |
hs/byte-bs----foldlx: 1.014 2β° 0.2 βββββββ |
hs/byte-bs----foldrx: 0.999 2β° 0.1 ββββββ |
hs/byte-bsl---acc: 1.957 1β° 0.1 ββββββββββββ |
hs/byte-xxxxx-acc-1: 3.591 2β° 0.1 ββββββββββββββββββββββ |
hs/byte-xxxxx-acc-2: 3.598 4β° 0.1 ββββββββββββββββββββββ |
hs/byte-xxxxx-foldl: 3.594 1β° 0.1 ββββββββββββββββββββββ |
c/byte-getchar: 3.761 2β° 0.1 βββββββββββββββββββββββ |
c/byte-getchar-u: 0.719 2β° 0.3 βββββ |
c/byte-4k: 0.101 10β° 3.1 β |
Memory: Peak
------- KB
hs/byte-bs----acc: 147784 βββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldlx: 147812 βββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bs----foldrx: 147788 βββββββββββββββββββββββββββββββββββββββββ |
hs/byte-bsl---acc: 3228 β |
hs/byte-xxxxx-acc-1: 1904 β |
hs/byte-xxxxx-acc-2: 1908 β |
hs/byte-xxxxx-foldl: 1908 β |
c/byte-getchar: 432 β |
c/byte-getchar-u: 440 β |
c/byte-4k: 436 β |
Time (space counting) std
--------------------- avg dev slack
hs/space-bs-c8-acc-1: 1.313 0β° 0.2 ββββββββ |
hs/space-bs-c8-foldlx-1: 1.326 1β° 0.1 ββββββββ |
hs/space-bs-c8-foldlx-2: 1.328 1β° 0.1 ββββββββ |
hs/space-bs-c8-foldrx: 1.128 1β° 0.2 βββββββ |
hs/space-bs-c8-lenfil: 1.327 2β° 0.2 ββββββββ |
hs/space-bslc8-acc-1: 3.002 1β° 0.1 βββββββββββββββββββ |
hs/space-bslc8-acc-2: 3.010 2β° 0.0 βββββββββββββββββββ |
hs/space-bslc8-acc-3: 2.586 1β° 0.1 ββββββββββββββββ |
hs/space-bslc8-chunk-1: 1.192 0β° 0.0 ββββββββ |
hs/space-bslc8-chunk-2: 1.189 0β° 0.1 ββββββββ |
hs/space-bslc8-chunk-3: 1.272 1β° 0.2 ββββββββ |
hs/space-bslc8-foldl: 1.517 0β° 0.1 ββββββββββ |
hs/space-bslc8-foldlx-1: 1.516 0β° 0.0 ββββββββββ |
hs/space-bslc8-foldlx-2: 1.511 0β° 0.0 ββββββββββ |
hs/space-bslc8-foldr-1: 1.205 1β° 0.2 ββββββββ |
hs/space-bslc8-foldr-2: 1.202 3β° 0.1 ββββββββ |
hs/space-bslc8-lenfil-1: 1.400 0β° 0.0 βββββββββ |
hs/space-bslc8-lenfil-2: 1.396 0β° 0.0 βββββββββ |
hs/space-bsl---foldlx: 1.476 1β° 0.1 βββββββββ |
hs/space-xxxxx-acc-1: 4.245 1β° 0.0 ββββββββββββββββββββββββββ |
hs/space-xxxxx-acc-2: 4.241 2β° 0.1 ββββββββββββββββββββββββββ |
hs/space-xxxxx-foldl: 4.239 2β° 0.1 ββββββββββββββββββββββββββ |
hs/space-xxxxx-lenfil: 6.287 2β° 0.0 ββββββββββββββββββββββββββββββββββββββ|
c/space-getchar: 4.031 18β° 0.0 βββββββββββββββββββββββββ |
c/space-getchar-u: 0.609 2β° 0.7 ββββ |
c/space-4k: 0.465 2β° 0.6 βββ |
c/space-megabuf: 0.613 1β° 0.3 ββββ |
c/space-getwchar: 4.584 1β° 0.1 ββββββββββββββββββββββββββββ |
c/space-getwchar-u: 2.437 0β° 0.1 βββββββββββββββ |
c/space-32k: 0.445 1β° 0.5 βββ |
c/space-32k-8: 0.448 0β° 0.0 βββ |
Memory: Peak
------- KB
hs/space-bs-c8-acc-1: 147772 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-1: 147800 βββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldlx-2: 147804 βββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-foldrx: 147776 ββββββββββββββββββββββββββββββββββββββββ |
hs/space-bs-c8-lenfil: 147796 βββββββββββββββββββββββββββββββββββββββββ |
hs/space-bslc8-acc-1: 3192 β |
hs/space-bslc8-acc-2: 3192 β |
hs/space-bslc8-acc-3: 3188 β |
hs/space-bslc8-chunk-1: 65208 ββββββββββββββββββ |
hs/space-bslc8-chunk-2: 65212 ββββββββββββββββββ |
hs/space-bslc8-chunk-3: 75232 βββββββββββββββββββββ |
hs/space-bslc8-foldl: 85856 ββββββββββββββββββββββββ |
hs/space-bslc8-foldlx-1: 85852 ββββββββββββββββββββββββ |
hs/space-bslc8-foldlx-2: 85856 ββββββββββββββββββββββββ |
hs/space-bslc8-foldr-1: 169684 ββββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-foldr-2: 169684 ββββββββββββββββββββββββββββββββββββββββββββββ|
hs/space-bslc8-lenfil-1: 109404 ββββββββββββββββββββββββββββββ |
hs/space-bslc8-lenfil-2: 109404 ββββββββββββββββββββββββββββββ |
hs/space-bsl---foldlx: 85880 ββββββββββββββββββββββββ |
hs/space-xxxxx-acc-1: 1916 β |
hs/space-xxxxx-acc-2: 1916 β |
hs/space-xxxxx-foldl: 1916 β |
hs/space-xxxxx-lenfil: 1892 β |
c/space-getchar: 436 β |
c/space-getchar-u: 436 β |
c/space-4k: 468 β |
c/space-megabuf: 146968 ββββββββββββββββββββββββββββββββββββββββ |
c/space-getwchar: 484 β |
c/space-getwchar-u: 480 β |
c/space-32k: 496 β |
c/space-32k-8: 500 β |
1
0