在导入和使用IronPython时,我在VS2010中遇到了一些性能问题。
我有一个包含以下代码的IronPython测试项目:
import time
print 'StandaloneIronPython'
startTime = time.time()
from sympy import *
importTime = time.time() - startTime
print 'Import time = %f' % importTime
startTime = time.time()
for x in (x/10.0 for x in xrange(-100,100)):
(x**2-2*x)
numericsTime = time.time() - startTime
print 'Basic numerics time= %f' % numericsTime
startTime = time.time()
for x in (x/10.0 for x in xrange(-100,100)):
N(x**2-2*x)
sympyTime = time.time() - startTime
print 'SymPy time = %f' % sympyTime
raw_input('Press enter to continue...')SymPy被下载并作为一个鸡蛋安装;我的"IronPython 2.7\Lib\site-packages“文件夹位于项目搜索路径中。
如果我通过“调试>启动调试”运行该程序,我大致可以得到以下内容:
StandaloneIronPython
Import time = 12.090019
Basic numerics time= 0.015594
SymPy time = 2.230804
Press enter to continue...但是,如果我通过"Debug > Start而不进行调试“运行该程序,我将大致得到:
StandaloneIronPython
Import time = 2.199600
Basic numerics time= 0.015602
SymPy time = 0.140404
Press enter to continue...我得到~5倍的速度进口和>10倍的速度运行同情。
那么,如果IronPython花费全部时间来调试库代码,那么如何才能获得良好的性能呢?
发布于 2011-06-01 21:56:00
无论何时,当您看到有和没有附加调试器的运行之间存在很大的性能差异时,这通常是因为您的应用程序正在生成大量的事件,调试器必须处理这些事件。
这方面最常见的例子是例外。如果SymPy在初始化过程中抛出并捕获大量异常,则每个异常都会导致往返调试器(即使已处理),从而导致大幅度的减速。
您可以通过"Debug >Exception.“来验证这一点,检查”公共语言运行时异常“旁边的”引发“框并重新运行该应用程序。如果你在数以百计的例外情况下停下来,那就是你的问题了。
如果这确实是你的问题,不幸的是没有一个很好的解决办法。将您的Python代码预编成.dll并不能防止抛出这些异常。
https://stackoverflow.com/questions/6183058
复制相似问题