[Haskell-cafe] Unboxed arrays
Jed Brown
jed at 59A2.org
Wed Mar 26 13:25:55 EDT 2008
On Wed 2008-03-26 19:50, Bulat Ziganshin wrote:
> Hello Jed,
>
> Wednesday, March 26, 2008, 7:02:28 PM, you wrote:
>
> > StorableArray. Unfortunately there is a performance hit to using Storable
> > versus the built in unboxed types.
>
> are you sure? it was in ghc 6.4, now afair they should be the same.
> look in http://haskell.org/haskellwiki/Modern_array_libraries
The comparison I'm referring to is a micro-benchmark taken from the shootout. I
modified the nsieve-bits code here:
http://shootout.alioth.debian.org/gp4/benchmark.php?test=nsievebits&lang=ghc&id=0
The shootout code uses STUArray, one modification uses IOCArray, another uses
StorableArray (which should be equivalent to IOCArray). Here are some timing
results with ghc-6.8.2 on x86_64.
$ for e in nsU nsC nsS; do time ./$e 12 > /dev/null; done
1.087 real 1.087 user 0.000 sys 99.96 cpu
3.454 real 3.326 user 0.127 sys 99.98 cpu
3.448 real 3.343 user 0.103 sys 99.94 cpu
With ghc-6.8.2 on x86, I get
$ for e in nsU nsC nsS; do time ./$e 12 > /dev/null; done
./nsU 12 4.57 real 4.45 user 0.01 sys
./nsC 12 10.46 real 9.88 user 0.27 sys
./nsS 12 10.59 real 9.86 user 0.24 sys
That is, the STUArray version (nsU) is much faster than IOCArray (nsC) and
StorableArray (nsS) for this test. To see for yourself, checkout CArray
darcs get http://code.haskell.org/carray
build it, then see the script in tests/runtests.sh. It will build an run these
benchmarks, confirming that the output is the same and providing timing
information.
I would love to see this discrepancy go away, but sadly, it is not there yet.
Jed
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20080326/e287b283/attachment.bin
More information about the Haskell-Cafe
mailing list