相关疑难解决方法(0)

最后的性能优化策略

这个网站上已经存在很多性能问题,但是我发现几乎所有这些都是特定于问题且相当狭窄的问题.几乎所有人都重复这些建议,以避免过早优化.

我们假设:

  • 代码已经正常工作
  • 所选择的算法对于问题的情况已经是最佳的
  • 已经测量了代码,并且已经隔离了违规的例程
  • 所有优化尝试也将被测量,以确保它们不会使事情变得更糟

我在这里寻找的是在一个关键算法中挤出最后几个百分点的策略和技巧,除此之外别无他法.

理想情况下,尝试使答案语言不可知,并在适用的情况下指出建议策略的任何缺点.

我将使用我自己的初步建议添加回复,并期待Stack Overflow社区可以想到的任何其他内容.

language-agnostic optimization performance

600
推荐指数
28
解决办法
8万
查看次数

gprof 的替代品

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

profiler profiling gprof

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

开源Java Profilers

你们可以推荐什么用于Java?

唯一的要求是它应该是开源的,或者没有太昂贵的学术许可.

java profiler

91
推荐指数
5
解决办法
8万
查看次数

在Eclipse中分析Java应用程序?(插入)

我希望在Eclipse中的 Java应用程序中找到瓶颈.我认为这可能有用:

http://www.eclipse.org/projects/project_summary.php?projectid=tptp.performance

还有其他好的插件吗?

编辑好了,它不一定是Eclipse插件.但这会很好.而且,我对速度最感兴趣.

java eclipse optimization plugins profiling

51
推荐指数
5
解决办法
6万
查看次数

C++:删除与免费和性能

  1. 考虑:

    char *p=NULL;
    free(p) // or
    delete p;
    
    Run Code Online (Sandbox Code Playgroud)

    如果我使用freedelete开启会发生什么p

  2. 如果程序需要很长时间才能执行,比如10分钟,有没有办法将其运行时间减少到5分钟?

c++ performance pointers

26
推荐指数
3
解决办法
7万
查看次数

任何推荐的Java分析教程?

是否有任何推荐的Java应用程序分析教程?

我正在使用JProfilerEclipse 测试和性能工具平台(TPTP)进行分析.然而,虽然配备了精彩的武器,作为Java新概要的新手,我仍然缺少指出瓶颈的一般理论和技巧.

java performance profiling

24
推荐指数
3
解决办法
2万
查看次数

ASP.NET MVC应用程序性能分析

人们目前如何分析其ASP.NET MVC应用程序的性能?

我最感兴趣的是简单而自由的方法.

asp.net-mvc performance

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

Java VisualVM为CPU分析提供了奇怪的结果 - 还有其他人遇到过这种情况吗?

我编写了这个小型(并且效率低下)的类,并希望使用Java VisualVM对其进行概要分析.

public class Test {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        br.readLine();
        int n = Integer.parseInt(args[0]);
        int fib = fib(n);
        System.out.println(fib);
    }

    private static int fib(int n) {
        if (n < 2) {
            return n;
        }
        return fib(n-1)+fib(n-2);
    }
}
Run Code Online (Sandbox Code Playgroud)

结果很奇怪.调用ConnectionHandler.run()完全控制了结果.

(98.2%)sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run()
(1.7%)java.lang.Thread.join(long)
(0%)java.lang.String.equals(Object)
等. .

可能有大约一百个方法分析,其中没有一个是fib(int)!

我的程序实际上将所有时间花在这些方法上是不可思议的.他们似乎是连接到我的jvm并做其事情的探查器.

我究竟做错了什么?

为清晰起见进行了编辑:如果你传入了45个n,那么这个应用程序将运行20个简单的秒.我最初分析的程序(不是斐波纳契计算器)将我的cpu上的所有四个核心固定为100%,并且我正在进行持续长达5分钟的分析运行.这些具有相同的结果,并且我的应用程序中的方法在热点方法列表中没有出现.

它随着运行而变化,但ConnectionHandler.run()始终位于顶部,通常占配置文件时间的~99%.

第二次编辑:我尝试过使用采样器,现在我得到的结果与JProfiler正在生成的结果一致.这样做的缺点是我没有得到分析带来的堆栈跟踪信息.但对于我的迫切需求,这是非常好的.

我在玩游戏时发现的东西是VisualVM在分析它们时计算方法调用的挂钟时间.

在我的特定情况下,我的应用程序有一个主线程,它启动工作线程并立即阻止等待队列上的消息.

这意味着阻塞方法似乎几乎占据了探查器的所有时间,尽管这种方法不是占用了我的CPU.

我希望sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run()方法能够很好地完成它的工作 - 但是当它终止时它会成为我应用程序中运行时间最长的方法之一 - 反复出现.

java profiling visualvm

21
推荐指数
1
解决办法
7109
查看次数

您使用哪种Java Profiling工具以及您认为哪种工具最好?

想知道stackoverflow社区对各种免费和非免费的Java Profilers和分析工具的看法.

java profiler profiling

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

如何配置我的代码?

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

我已经阅读了文档,但由于没有给出任何例子,我无法从中得到任何结果.

我有一个很大的代码,它花了很多时间,因此我想分析并提高其速度.我没有在方法中编写我的代码,其间很少但不完全.我的代码中没有任何主要内容.我想知道如何使用分析.我正在寻找关于如何分析的一些示例或示例代码.

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

import psyco
psyco.full()
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?它没有表现出任何改善.任何其他加速方式,请建议.

python profiling

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