IronLanguages / main

Work for this repo has moved to https://github.com/IronLanguages/ironpython2
1.16k stars 347 forks source link

improve startup time #409

Open ironpythonbot opened 9 years ago

ironpythonbot commented 9 years ago

ipy takes a crazy amount of time to start. On an 8-core, recent Xeon:

timer ipy FAILOUT
File FAILOUT does not exist.
TIMER 6443.00 ms (6.44 seconds), ipy FAILOUT, returncode 1

Work Item Details

Original CodePlex Issue: Issue 20583 Status: Active Reason Closed: Unassigned Assigned to: Unassigned Reported on: Jan 12, 2009 at 10:29 PM Reported by: sgraham Updated on: Aug 29, 2013 at 11:15 AM Updated by: florianisopp

ironpythonbot commented 9 years ago

On 2009-01-28 22:40:33 UTC, jdehooge commented:

I've measured startup time for a rather big .NET/WinForms app, that I've worked on for the past 2 years

IronPython 1.0 interpreted: 25 sec IronPython 2.0 interpreted: 75 sec IronPython 2.0 compiled with pyc.py: 60 sec PythonNet (CPython for .NET): 6 sec (No 0 omitted) For me this is a very serious problem. The performance once running is comparable.

ironpythonbot commented 9 years ago

On 2009-02-13 03:13:07 UTC, mksql commented:

This batch file consistently returns a 7 second elapsed time, simply to startup an ipy console to run a script (the CPython 2.6 time averages 50 msec):

ECHO.| TIME ipy -c "print ''" ECHO.| TIME

ironpythonbot commented 9 years ago

On 2009-02-13 20:07:46 UTC, maplpro commented:

In fact this is an exact reason why we can't use ipy for unit testing. It kills all the idea of one unit test in 10ms.

ironpythonbot commented 9 years ago

On 2009-02-14 01:28:25 UTC, CurtHagenlocher commented:

Startup is particularly slow on a 64-bit operating system because of performance differences between the 32-bit and 64-bit jitters. Unless you need a 64-bit process, try the following:

copy ipy.exe to ipy32.exe use corflags.exe from the Windows SDK to mark ipy32.exe as a 32-bit executable by saying "corflags /32bit+ ipy32.exe".

The 32-bit version should give you much better startup -- though still nowhere near as good as the CPython startup. But this is something we're continuing to work on.

ironpythonbot commented 9 years ago

On 2009-02-14 01:38:55 UTC, mksql commented:

In my case, all tests are on 32bit systems. It is worth noting that if a simple test script is compiled to an assembly using pyc.py, the startup/run time is significantly reduced from ~7 seconds to ~2.

ironpythonbot commented 9 years ago

On 2009-02-14 01:51:09 UTC, mksql commented:

Building v2.6.0.1 from source also presents a significant improvement: ~1.2 second console startup vs ~7 seconds in the v2.0 release

ironpythonbot commented 9 years ago

On 2010-12-08 22:01:04 UTC, rjnienaber commented:

Machine specs: Pentium Dual-Core 2.59 GHz, 3.48 GB RAM

Timings for 2.7b1 with the following batch file:

ECHO. | TIME REM The current time is: 13:58:20.95 ipy -c "print ''" ECHO. | TIME REM The current time is: 13:58:21.70 python -c "print ''" ECHO. | TIME REM The current time is: 13:58:21.80