当比较两种不同的算法实现(因此,不关心它们的绝对性能,但仅仅是相对性能)时,我最好强迫Java只运行解释代码吗?
也就是说,-Xint旗帜上的我会好些吗?
我正在研究VS2010 Professional中的Visio Addin,我在调试应用程序时正在寻找热点(特别是在COM对象周围).我找到了许多可以分析现有.NET应用程序的分析器,但没有一个(我见过)支持调试.此外,因为这是一个.NET加载项而不是完整的独立可执行文件,所以我不确定它们是如何公平的.
我调查过的Profilers:
有没有人找到可以在VS2010调试会话期间使用的分析器?
我正在将一个小型库的使用添加到一个现有的大型软件中,并希望分析(在查找器详细信息中,而不仅仅是在输入和输出rdtsc()或gettimeofday调用中)开销和它是小型库的归属.使用像rdtsc()之类的东西我可以了解调用我的库函数所具有的延迟,但我不能做延迟归因,除非我还能看到分支是否被预测得不好,缓存是否正常工作等等.我查看了PAPI,因为我想到在更大的二进制文件的上下文中查看进出模块中的例程的某些硬件事件,但似乎我需要一个特定的内核模块供PAPI为我工作(Linux 2.6. 18 && Intel Xeon 5570)...有专门针对英特尔处理器的Vtune,但看起来它可以分析整个二进制文件的性能而不是特定的代码片段(3-4次调用到我的库中).
有没有办法让我使用Vtune作为我的目标,或者可能让我可以访问这些计数器而无需修补我的内核?
我读到gprof(函数分析)和其他分析方法可以返回执行程序时发生的浮点运算的数量,因此想知道Flops如何比常规运算贵得多?
我正在编写一个相对复杂的函数来进行从头到尾的数据分析.这个函数调用了我编写的许多子函数(它们本身称为子子函数等).我正在寻找一种工具来告诉我我的功能在每个子功能和子功能上花了多少时间,以便了解我应该在哪里寻找性能改进.与MATLAB的分析器类似的东西会很好.
例如,一个假设的功能audit:
#fun1 is called by fun2
fun1 <- function() {
rnorm(100000)
}
fun2 <- function(x) {
y <- x+1
z <- y*fun1()
}
mainFun <- function() {
z+3
}
audit(mainFun())
> mainFun = 1 s; of which 95% is in fun1 and 98% is fun2
Run Code Online (Sandbox Code Playgroud)
显然,我可以使用microbenchmark()或system.time()用于每个单独的功能 - 但随着mainFun变得更加复杂,使用它有效变得棘手.是否有现成的工具?
我没有看一些使用OpenMP的代码,虽然我对它不太熟悉.(代码或OpenMP.)
当针对它运行一个分析器时,我发现该程序应该在"OMP隐式屏障"功能中花费大约20%的挂钟时间.
这是典型的OpenMP,还是(可能)暗示工作负载不是在线程之间均匀分布?
谢谢
我正在尝试使用NVIDIA Tools Extension使用Visual Profiler对CUDA代码执行更准确的性能评估.我正在使用Visual Studio 2010来开发代码.
要为此功能设置Visual Studio 2010,我已添加
Properties -> Linker -> General -> Additional Library Directories -> $(NVTOOLSEXT_PATH)\lib\$(Platform);
Properties -> Linker -> General -> Input -> Additional Dependencies -> nvToolsExt32_1.lib;
Run Code Online (Sandbox Code Playgroud)
但是,当我使用时
#include <nvToolsExt>
Run Code Online (Sandbox Code Playgroud)
编译说
Error 1 error C1083: Cannot open include file: 'nvToolsExt': No such file or directory
Run Code Online (Sandbox Code Playgroud)
环境变量NVTOOLSEXT_PATH设置为
NVTOOLSEXT_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\nvToolsExt\
Run Code Online (Sandbox Code Playgroud)
但C:\Program Files\NVIDIA GPU Computing Toolkit\nvToolsExt\我的系统上没有该目录,所以我认为没有安装NVIDIA Tools Extension.
我有两个问题:
1)为NVIDIA工具扩展功能设置Visual Studio 2010的上述过程是否正确?2)如何安装工具?
提前致谢.
我正在尝试对一个相当大的项目进行一个Instrumentation Profiling(在整个解决方案中大约40,000个源文件,但是在分析中的项目有大约200个源文件),用C++编写.
每次我运行分析时,它会创建一个大约34GB的巨大报告,然后,当它要分析它时,它正在尝试(我认为)将整个文件加载到RAM中.
显然,它使计算机无法使用,我必须在分析仪完成之前停止它.
有什么建议?
有庞大的网络应用程序.当用户与Web应用程序交互时,大多数函数只被调用一次,因此没有性能问题.我写了一个新的"从文件导入"方法,该方法从系统调用多次不同的方法.我不想修改其他人的方法也不想禁用log4j.从文件导入将很少使用,并被视为加载项,而不是主要功能.由于这个原因,我遇到了性能问题.在分析后,我发现log4j使用了近22%的时间.
是否可以以编程方式禁用log4j,以便调用一种方法和方法?
我正在尝试使用Clojure处理图像,我想使用Clojure数据结构来表示图像.基本上,我的第一种方法是使用向量矢量并对mapv每个像素值进行操作并返回具有相同数据结构的新图像表示.但是,一些基本操作需要花费太多时间.
使用Jvisual profiler,我得到的结果如下所示.有人可以给我一个改善表现的小费吗?我可以提供更多的细节,如果有必要,但也许只是在寻找的成本seq,并next有人能有一个很好的猜测.
