有很多java profilers,有什么建议可以最好地分析一个在战争中部署到glassfish的java web start应用程序?
我正在进行一些刚体模拟.我使用Irrlicht引擎进行显示,使用openMesh来处理网格.
现在我使用VerySleepy描述了我的应用程序并发现大部分时间都花在以下函数中(不包括在子函数中花费的时间):
RtlCompareMemoryUlong模块"ntdll"源文件中的30%"未知"
KiFastSystemCallRet在模块"ntdll"源文件"未知"内21%
RtlFillMemoryUlong模块"ntdll"源文件中的9%"未知"
所以50%的时间花在这些功能上,我不会在我的代码中的某个地方调用它们,我不明白它们在做什么.我怀疑它与图形有关,因为我只显示非常简单的网格.
有人能给我一个提示,告诉我如何找出为什么调用这些函数以及如何摆脱它?
谢谢!
想知道是否有更简单的方法来查看我的模型正在运行查询?
我知道备用选项是xDebug和Firebug但是想知道一种更简单的方法.
任何人?
谢谢
我正在分析一些Flash代码,其中一种占用大量时间的方法是BitmapData.ctor.那是什么错误的?
我编写了以下扩展方法来从字典中获取元素,如果键不存在则写入null:
public static TValue ItemOrNull<TKey, TValue>(this IDictionary<TKey, TValue> dict, TKey key)
{
try
{
return dict[key];
}
catch (KeyNotFoundException ex)
{
return default(TValue);
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到我的程序运行得非常慢,所以我使用高精度计时器类跟踪了这个扩展方法的问题.我得到了类似的结果〜连续100次:
DebugTimer.ResetTimer();
dict1.ItemOrNull(key);
dict2.ItemOrNull(key);
DebugTimer.StopTimer();
Run Code Online (Sandbox Code Playgroud)
需要大约110,000,000个刻度(我的处理器超过0.03秒).虽然更详细的版本:
DebugTimer.ResetTimer();
if (dict1.ContainsKey(key))
y = dict1[key];
if (dict2.ContainsKey(key))
z = dict2[key];
DebugTimer.StopTimer();
MessageBox.Show(y.ToString(), z.ToString()) // so the compiler doesn't optimize away y and z
Run Code Online (Sandbox Code Playgroud)
需要大约6,000个滴答(小于0.000002秒).
为什么我的扩展方法版本比冗长的版本花费的时间长4个数量级,这是否清楚?
我已经下载了迷你探查器:http: //code.google.com/p/mvc-mini-profiler/
我正在使用带有webforms的ASP.net 4.0(VS 2010).我真的很困惑如何安装它.我已经打开了下载中包含的各种项目,大多数都没有打开没有错误.
我有点期待一个DLL只是包括,但这显然是错误的!我搜索了安装说明但找不到任何安装说明.
谁能帮帮我吗?
我正在为Windows Phone 7 silverlight应用程序寻找性能/ CPU分析器.像dotTrace或Ants Profiler这样的东西.有这样的事吗?
我有一个奇怪的时间从我在Linux上的应用程序的分析代码中读取,所以我决定通过NVidia Visual Profiler运行它.然而,在工具包4.1上,他们决定删除Compute Visual Profiler以引入nvvp.我需要处理程序之外的数据,nvvp不能做的是平均值,偏差,置信度和大量统计数据.问题是nvvp中没有导出功能,Compute Visual Profiler至少可以让你导出到CSV.是否有解决方案而不是安装4.0工具包?
谢谢
我正在使用Cocos2D for iOS开发游戏.
有一些场景,如菜单等和主要的游戏场景.在主场景中只有三个动态对象.这些物体定期相互射击(直到这些物体被杀死或移出场景).
现在的问题是:游戏不断地耗尽记忆力.我想知道我做错了什么.
没有明显的泄漏,如过度保留的物体.场景被dealloc编辑,对象从父母移除并清理,动画停止等.
无论如何,记忆继续在某个地方.我正在使用以下代码
+ (void) reportMemory
{
struct task_basic_info info;
mach_msg_type_number_t size = sizeof(info);
kern_return_t kerr = task_info(mach_task_self(),
TASK_BASIC_INFO,
(task_info_t)&info,
&size);
if (kerr == KERN_SUCCESS)
NSLog(@"Memory in use (in Kbytes): %f", info.resident_size / 1024.0);
else
NSLog(@"Error with task_info(): %s", mach_error_string(kerr));
}
Run Code Online (Sandbox Code Playgroud)
找出每次开始场景时消耗的内存量.报告的数字总是比前一个更大.
我试图使用分配探查器,但说实话,我无法弄清楚任何有用的东西.我看到总生存字节基本相同,但是进程不断分配和释放一些东西.
你建议我看一下什么?基本上,我正在寻求如何在我的情况下调试内存操作的建议.
编辑(有什么帮助我):
事实证明我打开了NSZombieEnabled.基本上,它是恒定内存消耗增加的主要因素.一些有用的信息和提示可以在@coneybeare答案中找到
第二个最有用的是使用@Jack建议的仪器(Leaks and Allocations).它帮助我找到了几个微妙的泄漏.
profiling ×10
c# ×2
c++ ×2
asp.net ×1
asp.net-4.0 ×1
bitmapdata ×1
debugging ×1
flash ×1
io ×1
ios ×1
java ×1
linux ×1
memory-leaks ×1
nvidia ×1
performance ×1
verysleepy ×1
xcode4.2 ×1