我有一个在Linux上运行的C++应用程序,我正在优化它.如何确定代码的哪些区域运行缓慢?
可能重复:
如何测量函数运行的时间?
我有一个I/O计时方法,可以将数据从一个位置复制到另一个位置.什么是计算执行时间的最佳和最实际的方法?Thread?Timer?Stopwatch?还有其他方法吗?我想要最精确的一个,尽可能简短.
我需要一个C#profiler.
虽然我不反对支付一个,但是免费或者至少试用版的东西是理想的,因为提交采购订单需要时间.
有什么建议?
在负载很重的情况下,我们的应用程序正在使一个强大的服务器达到100%的CPU使用率.读取进程转储,查看线程,其中一些是10分钟.在使用时,他们都没有给我任何见解!CLRStack.
!失控给了我:
0:030> !runaway
User Mode Time
Thread Time
53:2e804 0 days 0:10:04.703
30:31894 0 days 0:07:51.593
33:47100 0 days 0:07:24.890
42:11e54 0 days 0:06:45.875
35:35e18 0 days 0:06:07.578
41:54464 0 days 0:05:49.796
47:57700 0 days 0:05:45.000
44:3c2d4 0 days 0:05:44.265
32:3898c 0 days 0:05:43.593
50:54894 0 days 0:05:41.968
51:5bc58 0 days 0:05:40.921
43:14af4 0 days 0:05:40.734
48:35074 0 days 0:05:40.406
...
Run Code Online (Sandbox Code Playgroud)
在其中一个线程上调用!DumpStack,我得到:
0000001ab442f900 00007ff9ef4c1148 KERNELBASE!WaitForSingleObjectEx+0x94, calling ntdll!NtWaitForSingleObject
0000001ab442f980 00007ff9e920beb2 clr!SVR::gc_heap::compute_new_dynamic_data+0x17b, calling clr!SVR::gc_heap::desired_new_allocation
0000001ab442f9a0 00007ff9e90591eb clr!CLREventWaitHelper2+0x38, calling kernel32!WaitForSingleObjectEx
0000001ab442f9b0 00007ff9e90e0d2c …Run Code Online (Sandbox Code Playgroud) 可能重复:
什么是一些好的.NET Profilers?
我正在寻找好的.NET CLR内存分析工具.
我的关键要求是它将与IIS和独立的CLR应用程序配合良好.理想情况下,我会看到分配了哪些对象,分配它们的位置以及它们的大小?
有没有人对您推荐的特定工具有任何良好的体验?
如何在Visual Studio 2008中使用分析器?
我知道配置属性 - >链接器 - >高级 - >配置文件(/ PROFILE)中的构建选项,但我找不到任何有关使用它的任何内容,只有我能够找到的文章似乎只适用于旧版本的Visual Studio(例如,大多数人说要转到Build-> Profile来调出配置文件对话框,但在2008年没有这样的菜单项).
这是因为Visual Studio 2008不包含探查器,如果它在哪里,它的文档在哪里?
我想测试一个asp.net Web应用程序.什么是最好的免费图形工具?
虽然类似于蚂蚁的东西会非常好,但拥有一个甚至包含通过网络发送的数据信息的工具会很不错.像Ants + Fiddler这样的东西.我希望我不要求太多:)
谢谢.
我有一个ASP.NET网站,将在3-4天内使用大约2GB的物理内存,这对我来说听起来真的很糟糕.目前,我已经配置IIS以在达到500mb时重新启动应用程序池进程.我想尝试找出问题所在.
在.NET中创建对象的新实例时,我的印象是它不需要被释放,因为.NET垃圾收集器会为我执行此操作.
是这种情况还是这可能是我遇到问题的原因之一?
具有LLVM项目的Mono能够使用LLVM编译器后端,后端具有一些非常强大的优化功能,可以编译C#.NET项目,使其在计算密集型应用程序中运行速度提高约20%.
除了Mono的内置JIT编译器之外,Mono现在能够使用LLVM作为代码生成的后端.这使Mono可以从LLVM中完成的所有编译器优化中受益.例如,SciMark得分从482到610.
那么是否可以将现有的C#.NET项目作为目标使用Mono/LLVM以获得更快的Windows或Unix应用程序?它是那么容易还是你必须重构/修改应用程序代码?这甚至可以在常规.NET Framework下运行,还是专门用于Mono Framework项目?考虑到这一点:
这种额外的性能需要付出代价:使用LLVM进行JIT编译会消耗更多时间和更多内存.
Repro的步骤:
如何让TestDriven.net使用NCover生成有用的代码覆盖率XML文件?
到目前为止,我已尝试重新启动,卸载RTM版本并安装Beta版本,并在调试和发布模式下运行.
使用输出窗口文本更新:
------ Test started: Assembly: TestProject1.dll ------
NCover v1.5.8 - Code Coverage Analysis for .NET - http://ncover.com
NCover.Console v1.5.8 - Code Coverage Analysis for .NET - http://ncover.org
Copyright (c) 2004-2006 Peter Waldschmidt
Command: C:\Program Files\TestDriven.NET 3\ProcessInvocation86.exe
Command Args: "/assemblyName:TestDriven.TestRunner.Server, Version=3.2.2770.0, Culture=neutral, PublicKeyToken=50ecb853f8c6b8d2" "/xmlName:M:TestDriven.TestRunner.Coverage.NCoverCoverageTestRunner.OutOfProc.Run(System.String,System.String,System.String,System.String,System.String)" "/parameter:tcp://127.0.0.1:64445/7dbdb535-3602-4a8e-8bbc-f8be7eb83987" "/parameter:tcp://127.0.0.1:64445/fbff4f73-2438-43e4-b1f9-2bdaeb9c0907" "/parameter:C:\Users\Zian\Documents\Visual Studio 2010\Projects\ClassLibrary1\TestProject1\bin\Debug\TestProject1.dll" "/parameter" "/parameter"
Working Directory:
Assemblies: ClassLibrary1;ClassLibrary1_Accessor;TestProject1
Coverage Xml: C:\Users\Zian\AppData\Local\Temp\Mutant Design\TestDriven.NET 2.0\Coverage\ClassLibrary1\TestProject1.xml
Coverage Log: Coverage.Log
Waiting …Run Code Online (Sandbox Code Playgroud)