当前位置: 首页 > 面试题库 >

如何分析我的代码?

越望
2023-03-14
问题内容

我想知道如何分析我的代码。

我已经阅读了文档,但是由于没有给出示例,因此无法获得任何帮助。

我的代码很大,需要很多时间,因此我想介绍一下它并提高其速度。我没有用方法编写代码,介于两者之间但很少。我的代码中没有任何主要内容。我想知道如何使用分析。我正在寻找有关如何配置文件的一些示例或示例代码。

我尝试了psyco,即在代码顶部添加了两行:

import psyco
psyco.full()

这是正确的吗?它没有显示任何改善。还有其他加快方法,请提出建议。


问题答案:

这个问题的标准答案是使用cProfile。

不过,您会发现, 如果不将代码分成方法,则cProfile不会为您提供特别丰富的信息

取而代之的是,您可能想尝试一下这里的另一张海报,称为“ 蒙特卡洛概况”
。引用另一个答案:

如果您急于 在主观上很慢的情况 下在调试器下手动中断程序 ,则有一种简单的方法可以查找性能问题。

暂停几次,每次查看调用堆栈。 如果有一些代码浪费了一定百分比的时间(20%或50%或其他),那么这就是您在每次采样时都将其捕获的概率。
因此,这大约是您将看到样品的百分比。不需要有根据的猜测。如果您确实怀疑问题出在哪里,这将证明或不证明它。

您可能会遇到多个不同大小的性能问题。如果您清除其中任何一个,其余的将在以后的传递中占更大的比例,并且更容易发现。

警告:除非他们自己使用过,否则程序员往往会对这种技术持怀疑态度。他们会说分析器会为您提供此信息,但是只有在他们对整个调用堆栈进行采样的情况下,这才是正确的。调用图不会为您提供相同的信息,因为1)它们没有在指令级别上进行汇总,2)在存在递归的情况下它们给出了令人困惑的摘要。他们还会说,它实际上仅对玩具程序有效,而实际上对任何程序都有效,并且似乎在较大的程序上效果更好,因为他们往往会发现更多的问题[
重点 ]。

它不是正统的,但是我在一个使用cProfile进行分析无法提供有用输出的项目中非常成功地使用了它。

最好的是,这在Python中很容易做到。只需在解释器中运行Python脚本,按[Control-C],记下回溯并重复多次。



 类似资料:
  • 问题内容: 当我创建一个新会话并告诉可视化分析器启动 python/pycuda脚本我得到以下错误消息: 以下是我的偏好: 启动: 工作目录: 参数: 我在ubuntu10.10下使用cuda4.0。64位。分析编译的示例是有效的。 p、 我知道这个问题[如何在 Linux系统?](https://stackoverflow.com/questions/5317691/how-to-profile

  • 问题内容: 我知道这个问题在前面已经问过了,但是我仍然无法弄清楚Jmeter摘要报告中参数的意义是什么? 这是JMeter的设置: 那么这是否意味着我的5k请求完成了738毫秒(0.7 s)的时间?还是意味着每个请求都需要0.7秒才能完成?类似地,最小和最大参数的解释是什么。 问题答案: 大约平均值-738或0.7s意味着,例如,如果您有一个带有两个线程的请求,而第一个线程在0.9s内完成,第二个

  • IntelliJ的Sonarlint插件对我们的Java代码进行分析,但它不会在同一项目中分析Groovy代码。 我们有一个Grails项目,它在命令行上与sonar runner一起工作。当我安装IntelliJ IDEA Sonarlint插件时,该插件似乎没有从命令行配置中获取设置,并且它没有像编辑器中的Java文件那样显示问题的警告突出显示。 我们的项目使用“代码覆盖率”Grails插件生

  • 阅读优秀开源项目源码是提高能力的重要手段,营造舒适、便利的阅读环境至关重要。 4.1 语法高亮 代码只有一种颜色的编辑器,就好像红绿灯只有一种颜色的路口,全然无指引。现在已是千禧年后的十年了,早已告别上世纪六、七十年代黑底白字的时代,即使在字符模式下编程(感谢伟大的 fbterm),我也需要语法高亮。所幸 vim 自身支持语法高亮,只需显式打开即可: " 开启语法高亮功能 syntax enabl

  • 问题内容: 我想找到一种方法来确定PHP中的每个函数以及PHP中的每个文件需要花费多长时间。我有一个旧的遗留PHP应用程序,试图在其中找到“粗糙点”,因此,我想客观地确定哪些例程和页面需要花费很长时间来加载。 是否有任何允许这样做的预制工具,还是我只能使用microtime并构建自己的性能分析框架? 问题答案: 实际上,上周我已经做了一些优化工作。XDebug确实是必经之路。 只需将其启用为扩展名

  • 问题内容: 是否有用于PHP源文件的静态分析工具?二进制本身可以检查语法错误,但是我正在寻找功能更多的东西,例如: 未使用的变量分配 未先初始化就分配给的数组 以及可能的代码样式警告 … 问题答案: 从命令行以lint-mode运行php来验证语法而不执行: 更高级别的静态分析器包括: php-sat - Requires http://strategoxt.org/ PHP_Depend PHP