python - Pycharm 调试器比正常运行慢得多

标签 python performance debugging ironpython pycharm

我正在尝试使用 pycharm 来调试 ironpython 脚本。它进展不顺利,因为 pycharm 在 Debug模式下运行非常缓慢。我意识到我们可以预期会出现一些放缓,但我正在经历大约 200 倍的放缓。以下是我的 pystone 结果:

正常运行:

"C:\Program Files (x86)\IronPython 2.7\ipy.exe" C:/Users/melchoir55/PycharmProjects/pystone/pystone.py
Pystone(1.1) time for 50000 passes = 0.270744
This machine benchmarks at 184676 pystones/second

调试器:

"C:\Program Files (x86)\IronPython 2.7\ipy.exe" -X:Frames "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 3.0.1\helpers\pydev\pydevd.py" --multiproc --client 127.0.0.1 --port 52669 --file C:/Users/melchoir55/PycharmProjects/pystone/pystone.py
pydev debugger: warning: sys._current_frames is not supported in Python 2.4, it is recommended to install threadframe module
pydev debugger: warning: See http://majid.info/blog/threadframe-multithreaded-stack-frame-extraction-for-python/
pydev debugger: process 9064 is connecting

Connected to pydev debugger (build 131.339)
Pystone(1.1) time for 50000 passes = 71.5615
This machine benchmarks at 698.700 pystones/second

有人知道这里会发生什么吗?

最佳答案

问题是 ironpython。显然,ipy 不适用于调试器。我使用相同的调试器(eclipse pydev、pycharm、visual studio)再次运行 pystone,除了这次使用常规 python 分发而不是 ironpython。结果要好得多:

使用标准python正常运行:

Pystone(1.1) time for 50000 passes = 0.462739
This machine benchmarks at 108052 pystones/second

使用标准 python 运行调试:

pydev debugger: starting
Pystone(1.1) time for 50000 passes = 4.49224
This machine benchmarks at 11130.3 pystones/second

所以看起来常规 python 在 Debug模式下仍然会出现明显的速度下降,但与 ironpython 经历的速度下降相比没有什么。如果您遇到此问题,您可能会考虑转储 ironpython。

关于python - Pycharm 调试器比正常运行慢得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19735254/

相关文章:

python - 在 Python 中,将文本转换为 Zip 转换为 base64,反之亦然

python - 在 python 中使用 unicode

python - 使用 python subprocess.run 处理异常

c++ - wntdll.pdb 未加载 - 看不到异常

debugging - 如何清除Android Studio Logcat控制台日志?

python - 比较时如何默认获取Enum值?

javascript - Web 应用程序性能 : SVG, Canvas 或 Dom 操作

java - 我必须从数据库中获取 500K 行并将该数据写入文件,意味着执行 I/O 操作

c++ - 在 C++ 中以高性能将 double 转换为 char*

C++ 太多大小为 4 的写入/读取