2010-09-01 10 views
5

Çalışmak için küçük bir betik yazdım ve herşeyin iyi geliştiğini ancak üretim aşamasına döndüğüm zaman insanlar ilk formu görüntüledikleri zaman şikayet ettiler. Ona baktığımızda, her zaman betik tarafından kullanılan çeşitli modüllerin içe aktarılması için harcanan gibi görünüyordu. Ben sadece ithalat deyimleri ve bir Merhaba Dünya yazdırın yeni bir betik yaptım ve daha sonra bir python komut dosyası ve aşağıdaki sonuçları ile bir yürütülebilir çalıştı. Neler oluyor ve , bunu hızlandırmak için herhangi bir yol var mı?Neden IronPython bir komut dosyası olarak bir exe olarak oluşturulduğunda modülleri almak için çok daha yavaş oluyor?

Python dosyası: ipy pyc.py /main:time.py/hedefle inşa

$ 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: exe time.py ait

$ 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 

içeriği:

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

Ekleme/platform: Oluşturma komut dosyasına x86, yürütülebilir dosyanın başlatma süresini 22 saniyeden 4 saniyeye düşürdü, ancak bu, hala .py komut dosyasının% 250'sidir. –

cevap

0

pcy.py çağrısına/platformuna x86 eklenmesi ve sonuçtaki dll ve exe üzerinde çalışan ngen kombinasyonu, exe'nin yürütme süresini 1/2'ye düşürdü bir betik olarak çağırmaktan. Bunu başarılı olarak adlandırırdım.

İlgili konular