2010-09-01 12 views
5

Napisałem mały scenariusz do pracy, a gdy go rozwijałem, wszystko było w porządku, ale gdy go oddałem do użytku, podczas pracy z produkcją, ludzie zaczęli narzekać, że to czas, jaki zajęło , aby wyświetlić pierwszy formularz. Patrząc w to cały czas wydawało się, że spędził na importowaniu różnych modułów używanych przez skrypt. Zrobiłem nowy skrypt tylko z instrukcji importowania i wydruku Hello World, a następnie uruchomiłem go jako skrypt Pythona i plik wykonywalny z wynikami poniżej. Co się dzieje i jest jakiś sposób, aby to przyspieszyć?Dlaczego program IronPython tak wolniej importuje moduły, gdy jest zbudowany jako exe, a następnie jako skrypt?

plik Python:

$ for i in {1..10} 
> do 
> time ./ipy.exe time.py 
> done 
real 0m1.712s 
real 0m1.701s 
real 0m1.689s 
real 0m1.691s 
real 0m1.709s 
real 0m1.663s 
real 0m1.697s 
real 0m1.700s 
real 0m1.699s 
real 0m1.741s 

exe ​​zbudowany z IPY pyc.py /main:time.py/target: exe

$ for i in {1..10} 
> do 
> time ./time.exe | grep -v user | grep -v sys 
> done 
real 0m22.119s 
real 0m22.116s 
real 0m22.133s 
real 0m21.816s 
real 0m21.985s 
real 0m21.785s 
real 0m22.010s 
real 0m21.686s 
real 0m21.877s 
real 0m21.944s 

zawartość time.py:

import clr 
from clr import AddReference 
AddReference("System.Windows.Forms") 
AddReference("System.Drawing") 
AddReference("p4api") 
import cgi 
from System.Diagnostics import Process 
from P4API import * 
import System 
from System import * 
from System.Windows.Forms import * 
from System.ComponentModel import * 
from System.Drawing import * 
from System.Threading import * 
import re 
import urllib 
import os 
import tokenize 
from cStringIO import StringIO 
from optparse import OptionParser 
import os 
import urllib 
import ntpath 
import stat 
import genericpath 
import warnings 
import linecache 
import types 
import UserDict 
import _abcoll 
import abc 
import textwrap 
import string 
import urlparse 
import collections 
import keyword 
import nturl2path 
import mimetools 
import tempfile 
import random 
import __future__ 
import rfc822 
import tokenize 
import token 
import codecs 
import ConfigParser 
import uuid 
import sys 

print "Hello World" 
+1

Dodawanie/platforma: x86 do skryptu kompilacji skróciło czas uruchamiania pliku wykonywalnego z 22 sekund do 4 sekund, jednak jest to nadal 250% skryptu .py. –

Odpowiedz

0

Połączenie dodania/platformy: x86 do wywołania pcy.py i uruchomienia ngen w wynikowym pliku dll i exe skróciło czas wykonywania pliku exe do 1/2 to z wywoływania go jako skryptu. Nazwałbym to sukcesem.

Powiązane problemy