Python LOC, .exe size, and refactoring

CM cmpython at gmail.com
Fri Feb 24 19:44:12 CET 2012


On Feb 22, 12:29 am, Steven D'Aprano <steve
+comp.lang.pyt... at pearwood.info> wrote:
> On Tue, 21 Feb 2012 19:51:07 -0800, CM wrote:
> > I have an application that I was hoping to reduce a bit the size of its
> > .exe when "packaged" with py2exe.  I'm removing some Python modules such
> > as Tkinter, etc., but now wonder how much I could size I could reduce by
> > refactoring--and therefore shortening--my code.
>
> Well that will depend on how much you refactor it, but frankly, unless
> your code is truly awful, this will be a micro-optimization. py2exe
> bundles a Python runtime environment plus your files into a single exe
> file. Typically the runtime environment will be somewhere around 11MB for
> wxPython GUI apps (or 4MB with compression turned on, which will slow
> your application down).
>
> http://www.py2exe.org/index.cgi/SingleFileExecutable
>
> The runtime environment for Oracle's Java environment starts at 7MB and
> is typically 15MB, plus whatever libraries your own code produces. For
> dot-net applications, the framework can be up to 60MB.
>
> http://weblogs.java.net/blog/stanleyh/archive/2005/05/deployment_unde...
>
> http://www.hanselman.com/blog/SmallestDotNetOnTheSizeOfTheNETFramewor...
>
> While I think 60MB for a basic calculator app is taking the piss, this is
> 2011 not 1987 and we don't have to support floppy disks any more. 11MB
> for a GUI app is nothing to be worried about. That takes, what, 3 minutes
> to download even on a 512 kbps link?
>
> > Is there a rule of thumb that predicts the relationship between the
> > number of lines of Python code and the resultant size of the application
> > (leaving aside the size of imported modules)?
>
> Yes. To a close approximation, for most applications:
>
> size of bundled application = (
>     size of Python runtime environment + size of libraries used
>     )
>
> Your code is most likely insignificant compared to the others.
>
> > Or is there a way to
> > roughly estimate how much would refactoring the code as much as I
> > reasonably can help?  (For example, in some cases there is some cut and
> > paste coding...I know, it's bad).
>
> Look at it this way: take the .pyc file from your code. How big is it?
> Say, it's 200K. That's a BIG file -- the decimal module in the standard
> library is only 152K. Suppose you could cut it in half -- you would save
> 100K. Even if you could somehow cut it down to 1K, you've saved less than
> 200K. Do you care?
>
> Refactoring your code is double-plus good for maintainability. You should
> do it anyway. But don't do it to shrink an 11MB exe down to 10.8MB.
>
> --
> Steven

Thanks.  All helpful advice.  I'm coming in around 14 MB when you
count some libraries, image files, etc., and I think I can live with
that, considering I was able to reduce it from about 20 MB at one
point by some excluding.

Che



More information about the Python-list mailing list