[Haskell-cafe] Help with optimization

Adrian Neumann aneumann at inf.fu-berlin.de
Sun Jul 20 14:17:41 EDT 2008


Maybe your image isn't strict enough and the computations are forced  
when the image gets written to disc?


Am 20.07.2008 um 14:13 schrieb Mitar:

> Hi!
>
> Profiling says that my program spends 18.4 % of time (that is around
> three seconds) and 18.3 % of allocations in this function which is
> saving the rendered image to a PPM file:
>
> saveImageList :: String -> Int -> Int -> [ViewportDotColor] -> IO ()
> saveImageList filename width height image = do
>   B.writeFile filename file
>     where file = B.append header bytes
>           header = C.pack $ "P6\n" ++ show width ++ " " ++ show height
> ++ "\n255\n"
>           bytes = B.pack $ concatMap (color . dealpha .
> (\(ViewportDotColor _ c) -> c)) image
>             where color (VoxelColor red green blue _) = [floor $ red *
> 255, floor $ green * 255, floor $ blue * 255]
>                   dealpha c = addColor c (VoxelColor 1.0 1.0 1.0 1.0)
> -- white background
>
> For a 921615 bytes large file to save this is too much in my opinion.
> And I think that it consumes to much allocations. Probably it should
> not store intermediate lists?
>
> Any suggestions?
>
> Best regards
>
>
> Mitar
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 194 bytes
Desc: Signierter Teil der Nachricht
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20080720/f3a20217/PGP.bin


More information about the Haskell-Cafe mailing list