GHC-generated executables size

Hi, I was playing around with ghc again, and I was wondering what makes the executables so large and how I could make them smaller (strip works, but is there anything more I can do?) More specifically, I am compiling a program that uses the GTK+ bindings, HDBC, and some things from Prelude. The program simply displays a window, and reads and writes values from/into a data base file. Not much, really. Anyway, the program size is 20MB without stripping, and 10MB after stripping ... Any hints? Thanks and good night for now .. Christian

On 15 Oct 2010, at 21:37, Christian Gosch wrote:
Hi, I was playing around with ghc again, and I was wondering what makes the executables so large and how I could make them smaller (strip works, but is there anything more I can do?) More specifically, I am compiling a program that uses the GTK+ bindings, HDBC, and some things from Prelude. The program simply displays a window, and reads and writes values from/into a data base file. Not much, really. Anyway, the program size is 20MB without stripping, and 10MB after stripping ...
A Haskell program needs to schlep around a runtime with it. So when you compare it to say a Java program, you need to compare it to the size of a JAR + the size of the VM, and in that case the size isn't so extraordinary. So that is the "why", as to the "what can you do" probably not much that you've not already tried, other than supplying your program as a script for #!/usr/bin/runghc http://www.haskell.org/ghc/docs/6.12.2/html/users_guide/runghc.html That would mean your program wasn't so self-contained, as the target machine would also need to have all the "stuff" that you have compiled in, e.g. the HDBC development package. Cheers, G
participants (2)
-
Christian Gosch
-
Gaius Hammond