我正在尝试描述我的java应用程序,只是为了找出花费大部分时间的方法.鉴于TPTP的反应不佳,我以为我会给Java VisualVM一个机会.
这一切似乎都很简单 - 除了我似乎无法从中得到任何一致或有用的东西.
我似乎无法看到任何与我自己的代码有关的内容 - 我得到的是对java.*方法等一大堆调用.
我已经尝试将检测限制在我自己的包中,这似乎减少了检测方法的数量,但我似乎还没有看到自己的方法.
每次运行时,我都会获得不同数量的方法,范围从10到1000.我已经尝试在我的应用程序启动时进入睡眠状态,以确保在应用程序开始执行任何有趣操作之前启动并运行VisualVM,以确保在有趣的内容运行时进行分析.
我有什么必须做的,以确保我的课程得到检验吗?有时间问题吗?.. like,必须等待类加载等?我也尝试过两次运行代码的内核,以确保所有代码都得到了运行...
我刚刚从Eclipse运行一个带有main的应用程序.我尝试使用Eclipse集成,以便在启动应用程序时VisualVM启动 - 结果是相同的.我也尝试将应用程序导出为可运行的应用程序,并从命令行独立运行它,而不是通过Eclipse运行 - 结果相同.
我的应用程序不是一个长期运行的Web应用程序等 - 只是一个主要调用我自己的其他类来进行一些处理,然后退出.
对于我可能做错的任何建议,我将不胜感激!:)
谢谢 !
使用最新的gcc编译器,我还需要考虑这些类型的手动循环优化,还是编译器会为我做好充分的处理?
我试图找出我的C++程序花费时间的地方,使用gprof.这是我的困境:如果我使用我用于发布版本的相同优化设置进行编译,几乎所有内容都被内联,并且gprof告诉我,无益的是,我90%的时间花在核心例程中,其中所有内容都是内联的.另一方面,如果我使用内联禁用编译,程序运行速度会慢一个数量级.
我想知道当我的程序编译时启用内联时,从我的核心例程调用的程序花了多少时间.
我在四核Intel机器上运行64位Ubuntu 9.04.我查看了google-perftools,但这似乎不适用于x86_64.在32位计算机上运行不是一种选择.
当启用内联时,是否有人建议如何更有效地配置我的应用程序?
编辑:这是我的问题的一些澄清.如果最初不清楚,我道歉.
我想找到在我的应用程序中花费的时间.分析我的优化构建导致gprof告诉我,大约90%的时间花在main上,其中所有内容都是内联的.在剖析之前我已经知道了!
我想知道的是内联函数花了多少时间,最好不要在我的构建选项中禁用优化或内联.在使用内联禁用进行性能分析时,应用程序的速度会慢一个数量级.这种执行时间的差异是一个方便的问题,但是,我不确定使用内联禁用构建的程序的性能配置文件是否与使用内联启用的程序的性能配置文件强烈对应.
简而言之:有没有办法在不禁用优化或内联的情况下获得有关C++程序的有用的性能分析信息?
switch语句大约需要30 case秒,包括从0到30的被禁止的无符号整数.
我可以做以下事情:
class myType
{
FunctionEnum func;
string argv[123];
int someOtherValue;
};
// In another file:
myType current;
// Iterate through a vector containing lots of myTypes
// ... for ( i=0; i < myVecSize; i ++ )
switch ( current.func )
{
case 1:
//...
break;
// ........
case 30:
// blah
break;
}
Run Code Online (Sandbox Code Playgroud)
func每次都要通过开关.关于切换的好处还在于我的代码比30个函数更有条理.
或者我可以这样做(不太确定):
class myType
{
myReturnType (*func)(int all, int of, int my, int args );
string argv[123];
int someOtherValue;
};
Run Code Online (Sandbox Code Playgroud)
我有30个不同的函数,在开始时,指向其中一个的指针被分配给myType. …
我想在linux上分析我的c ++应用程序.我想知道我的应用程序在CPU处理上花费了多少时间与IO /空闲时在块上花费的时间.
我知道在linux上有一个配置文件工具调用valgrind.但它打破了在每种方法上花费的时间,并没有让我全面了解CPU处理与闲置相比花费了多少时间?或者有没有办法用valgrind做到这一点.
我即将使用JProfiler和Eclipse Tptp进行java应用程序的研讨会分析,性能调优,内存分析,内存泄漏检测等. 我需要一些练习,我可以提供给参与者,他们可以:使用工具来分析发现问题:瓶颈,内存泄漏,次优代码等.我相信有丰富的经验和现实生活中的例子.
问题和解决方案不应过于复杂; 应该可以在几分钟内解决它们,最坏的情况是几小时.一些有趣的锻炼领域:
理想情况下,练习应包括样本未优化代码和解决方案代码.
我有一个使用多线程的Java大程序.在某些情况下,程序开始使用我的八核系统的三个核心中的100%.在正常使用中,程序使用1-2%的所有核心.如何找到超载核心的类?
我正在使用日志本机代码在Android上开发一个相当大的软件,它现在正在运行,但有一些性能问题.
我希望我可以在几个真正的Android手机上分析软件的每个模块(函数调用)的CPU周期,内存使用情况等.是否有一个简单的c库来做到这一点?
我看到人们使用oprofile,因为它是一个系统狂野的探查器,它似乎对我的情况来说太过分了,它需要重建内核和系统映像.
因为我有我的应用程序的完整源代码,所有我真正需要的是一个简单的c库,我可以嵌入我的代码中进行一些分析,同时应用程序运行几个测试用例.
顺便说一句,Linux的做法是什么?
我很好奇一个典型的C#profiler是如何工作的?
虚拟机中是否有特殊的挂钩?
是否可以轻松扫描函数调用的字节代码并将调用注入启动/停止计时器?
或者它真的很难,这就是为什么人们为此付费的工具?
(作为旁注,我觉得有点有趣,因为它非常罕见 - 谷歌完全错过了搜索" ac#profiler如何工作? "根本不起作用 - 结果是关于空调...)
我已经尝试了所有可能的字段,但无法找到调用函数的次数.
此外,我没有得到Self和# Self.这两个数字是什么意思?
profiling ×5
c++ ×4
java ×3
performance ×3
optimization ×2
profiler ×2
android ×1
android-ndk ×1
c ×1
c# ×1
class ×1
gcc ×1
instruments ×1
ios ×1
linux ×1
macos ×1
memory-leaks ×1
xcode ×1