相关疑难解决方法(0)

gprof 的替代品

还有哪些程序与 gprof 做同样的事情?

profiler profiling gprof

170
推荐指数
6
解决办法
7万
查看次数

如果探查器不是答案,我们还有其他选择吗?

在观看Joshua Bloch的演出"表现焦虑"后,我阅读了他在"评估Java Pro fi lers的准确性"演讲中提出的论文.引用结论:

我们的结果是令人不安的,因为它们表明在我们的七个基准测试和两个生产JVM中大多数普遍存在的错误 - 并且显着 - 所有四个最先进的专业人员都会产生不正确的专业知识.不正确的配置文件很容易导致性能分析师花时间优化对性能影响最小的冷​​方法.我们表明,不使用屈服点进行采样的概念验证问题不会遇到上述问题

论文的结论是我们无法真正相信剖析器的结果.但是,使用分析器的替代方法是什么.我们应该回去,只是用我们的感觉做优化吗?

更新:讨论中似乎遗漏的一点是观察者效应.我们能否建立一个真正" 观察者效应 " 的探测器- 免费?

java performance profiler

39
推荐指数
2
解决办法
4867
查看次数

如何找出哪种方法需要花费很多时间?

我的一个组件是花费太多时间来执行.它调用了许多服务,而这些服务又调用了许多dao方法.现在,有没有办法让它调用的每个方法花费时间.
我不想System.currentmillis在每个方法之前和之后编写计算所花费的时间,因为方法太多了.
我想我可能需要使用拦截器,或者可能是任何探查器都可以做到这一点.我不确定,请帮忙.

java debugging time profiling

17
推荐指数
1
解决办法
1万
查看次数

在PHP中分析超过函数调用

我已经开始使用PHP开始我的第一个有点认真的编程项目,并且很难获得良好的分析信息.我使用xdebug和cachegrind来分析代码,但它假设函数的"自我"执行时间是函数执行所花费的总时间减去它调用的任何函数的聚合时间.

虽然这本质上是正确的,但是当我尝试优化代码时,它没有多大帮助.例如,我有一个带有两个if语句的简单函数,它返回一个带有两个值的数组,根据xdebug,它占总执行时间的26%.它使用array_key_exists,我可以看到这些函数调用的执行时间约为1%.我看不到的是其他25%的执行时间如何与其余代码相比较.if语句需要多长时间,获取值对,将这些值放入数组中,然后返回数组?

我在文档中遗漏了一些xdebug标志吗?或者是否有PHP的分析工具,它将分析变量赋值,运算符,基本数据类型的构造以及其他非函数调用?优选地,不假设脚本可通过web服务器获得的东西.

我正在寻找的东西的一个例子是perl的nytprof.请注意,它描述了函数中的每一行代码(除了最后一次推送,它永远不会被执行).

php performance profiling

9
推荐指数
1
解决办法
1078
查看次数

使用匿名方法有任何开销吗?

我想知道在创建后台工作程序时是否通过使用匿名方法产生任何开销.

例如:

public void SomeMethod()
{
    BackgroundWorker worker = new BackgroundWorker();
    worker.DoWork += (sender, e) =>
    {
        //large amount of code
    }

    worker.RunWorkerAsync();
}
Run Code Online (Sandbox Code Playgroud)

上面的例子会比//large amount of code在单独的方法中定义更好还是更差?

在线定义后台工作程序方法是否有任何开销,特别是如果SomeMethod()经常调用?

c# anonymous-methods

8
推荐指数
1
解决办法
2641
查看次数

测量方法的哪个部分需要花费大量时间的最佳实践?

在我的初始化方法中,我调用其他一些方法,操作一些变量并迭代一些列表.现在我注意到加载方法需要一点点(大约2分钟).

但问题是,我不太确定该方法的哪一部分消耗了这么长时间.所以我想测量它,以便我可以在这个最有可能减少时间的部分上工作.

但衡量这一点的好方法是什么?

c# optimization

6
推荐指数
2
解决办法
1303
查看次数

GDB是否支持"运行时采样",或者是否有用户"扩展"来执行此操作

动机:我不能让google cpu profiler在代码运行的机器上工作(我的最后一口气我诅咒libunwind :)),所以我想知道gdb是否支持高频随机暂停程序执行,存储函数的名称发生中断并计算它在函数x中暂停的次数.这就是我所谓的"运行时采样",可能有更精确/更智能的名称.我查看了oprofile,但它很复杂到a)弄清楚它是否可以做到这一点b)弄清楚如何做它编辑:显然正确的名称是:"统计抽样方法"

编辑2:为什么我为此提供赏金的原因是我在SO上看到一些人推荐手动中断10-20x并用bt检查堆栈...当谈到时间时似乎非常浪费,所以我猜测一些智能ppl自动化它.:)
EDIT3:gprof不会削减它...我最近在ARM系统上尝试运行它并且输出是垃圾...... :(我猜它多线程的麻烦就是这个原因......

profiling gdb

6
推荐指数
1
解决办法
5364
查看次数

如何判断Java代码的效率

我刚刚意识到,从计算的角度来看,我不知道如何判断一段Java代码是否有效.阅读几个源代码有时我觉得我正在阅读的代码效率非常低,有时我觉得相反.

您能否列出基本的单行规则以及它们如此重要的原因?

编辑 - 我的问题与JVM的Java实现有关,所以诸如Java分配问题,字符串管理,异常处理,线程同步等等.

提前致谢

ps不要从字面上看"单行"

java optimization performance

4
推荐指数
2
解决办法
2484
查看次数