首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启用调试时外部模块的IronPython性能较差

启用调试时外部模块的IronPython性能较差
EN

Stack Overflow用户
提问于 2011-05-31 04:37:46
回答 1查看 346关注 0票数 1

在导入和使用IronPython时,我在VS2010中遇到了一些性能问题。

我有一个包含以下代码的IronPython测试项目:

代码语言:javascript
复制
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“文件夹位于项目搜索路径中。

如果我通过“调试>启动调试”运行该程序,我大致可以得到以下内容:

代码语言:javascript
复制
StandaloneIronPython
Import time = 12.090019
Basic numerics time= 0.015594
SymPy time = 2.230804
Press enter to continue...

但是,如果我通过"Debug > Start而不进行调试“运行该程序,我将大致得到:

代码语言:javascript
复制
StandaloneIronPython
Import time = 2.199600
Basic numerics time= 0.015602
SymPy time = 0.140404
Press enter to continue...

我得到~5倍的速度进口和>10倍的速度运行同情。

那么,如果IronPython花费全部时间来调试库代码,那么如何才能获得良好的性能呢?

  • 是否有一种方法可以将SymPy打包成库、程序集或其他类似于它将快速执行的东西?
  • 有没有办法告诉VS2010不要调试SymPy的代码?
  • 还有别的解决办法吗?
EN

回答 1

Stack Overflow用户

发布于 2011-06-01 21:56:00

无论何时,当您看到有和没有附加调试器的运行之间存在很大的性能差异时,这通常是因为您的应用程序正在生成大量的事件,调试器必须处理这些事件。

这方面最常见的例子是例外。如果SymPy在初始化过程中抛出并捕获大量异常,则每个异常都会导致往返调试器(即使已处理),从而导致大幅度的减速。

您可以通过"Debug >Exception.“来验证这一点,检查”公共语言运行时异常“旁边的”引发“框并重新运行该应用程序。如果你在数以百计的例外情况下停下来,那就是你的问题了。

如果这确实是你的问题,不幸的是没有一个很好的解决办法。将您的Python代码预编成.dll并不能防止抛出这些异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6183058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档