[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:


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

I would love to see this discrepancy go away, but sadly, it is not there yet.

-------------- 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