标签: profiling

在 C#/VS2010 中记录(计数)方法调用

目前我正在开发一个 C# DLL,用于本机 C++ 应用程序。由于我的 DLL 的初始化相当慢,我想在那里做一些分析。基本上我想知道我的 DLL 中的哪些方法被调用的顺序和频率。

一种方法是使用调试器单步调试代码。但这需要很长时间;-) 我宁愿有某种列表来显示我的哪个方法被调用的频率。

有什么办法可以自动获得这个(不改变我的代码)?甚至可能没有第三方工具,如分析器等?

c# debugging methods profiling visual-studio

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

将Google perftools指定为g ++以在R中使用C++

我在编译C++代码时安装了Google perftools(google-perftools 1.7-1ubuntu1),并将-lprofiler添加到R中的PKG_LIBS.

library(RcppArmadillo)
library(Rcpp)

Sys.setenv("PKG_CXXFLAGS"="-fopenmp")
Sys.setenv("PKG_LIBS"="-fopenmp -lprofiler")

sourceCpp('my.cpp')
Run Code Online (Sandbox Code Playgroud)

输出是:

/usr/bin/ld: cannot find -lprofiler
collect2: ld returned 1 exit status
make: *** [sourceCpp_17496.so] Error 1
g++ -I/usr/share/R/include -DNDEBUG    -I"/usr/local/lib/R/site-library/Rcpp/include" -I"/usr/local/lib/R/site-library/RcppArmadillo/include"   -fopenmp -fpic  -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -g  -c my.cpp -o my.o g++ -shared -Wl,-Bsymbolic-functions -Wl,-z,relro -o sourceCpp_17496.so my.o -llapack -lblas -lgfortran -lm -lquadmath -fopenmp -fopenmp -lprofiler -L/usr/lib/R/lib -lR 
Error in sourceCpp("my.cpp") : 
  Error 1 occurred building shared library.

WARNING: The tools required to build C++ code …
Run Code Online (Sandbox Code Playgroud)

c++ profiling r rcpp

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

无法分析gperftools分析器的输出(配置文件)

我正在使用gperftools来分析我的C代码.因此,我无法使用pprof应用程序分析配置文件.

$ gcc -g prog.c -o prog -lprofiler
$ export CPUPROFILE=info.prof
$ ./prog 

 Inside main()

 Inside func1 

 Inside new_func1()

 Inside func2 
PROFILE: interrupts/evictions/bytes = 1133/0/300
$ ls
info.prof  prog  prog.c
$ ls -lah info.prof 
-rw-rw-r-- 1 mm mm 2.6K Jun  6 09:36 info.prof
$ pprof info.prof prog
Reading Profile files in profile.*
Error: Could not open profile.0.0.0: No such file or directory
profile.ftab: No such file or directory
$ 
Run Code Online (Sandbox Code Playgroud)

我错了什么?什么是profile.ftab文件?

c profiling gperftools

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

使用gprof配置非终止C程序

我正在尝试使用gprof配置程序.关键是,在某些情况下,程序本身并没有完成,而是使用Linux执行时间限制.在这种情况下,不会生成文件'gmon.out'.

我想知道是否存在一种获取某种分析信息的方法,即使在程序超时结束的情况下也是如此.至于我读到这里是不可能的,所以我会很感激地对在我的问题有任何意见或建议.

提前致谢!

c linux profiling timeout gprof

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

如何从 nvprof 或 NVidia Visual Profiler 的输出中获取计时值?

我正在使用 nvprof 来分析某些东西(包括 CPU 工作和 GPU 工作,即我使用 nvprof 标记等),并且我得到了 nvprof 生成的二进制文件。我可以将这些导入到 NVVP(NVidia Visual Profiler;Linux 版本)中,只需稍加努力,就可以将其保存到 XML 中。

但是...... XML 不包含有关我的各种 CPU 何时执行的计时数据。它提到了他们的存在,但没有更多。此外,XML 的末尾有这个二进制 blob,可能是 Base64 编码或其他东西,位于 PDM 标记内。我不清楚那里是否有任何帮助。

xml profiling cuda text-decoding nvvp

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

测量 OpenCL 内核的内存吞吐量

我阅读了 OpenCL 中的全局内存优化。在其中一个幻灯片中,使用了一个非常简单的内核(如下)来演示内存合并的重要性。

__kernel void measure(__global float* idata, __global float* odata, int   offset) {

    int xid = get_global_id(0) + offset;
    odata[xid] = idata[xid];

}
Run Code Online (Sandbox Code Playgroud)

请参阅我下面的代码,它测量内核的运行时间

    ret = clFinish(command_queue);
    size_t local_item_size = MAX_THREADS;

    size_t global_item_size = INPUTSIZE;
    struct timeval t0,t1;
    gettimeofday(&t0, 0 );

    //ret = clFinish(command_queue);
    ret = clEnqueueNDRangeKernel(command_queue, measure, 1, NULL,
                                            &global_item_size, &local_item_size, 0, NULL, NULL);




    ret = clFlush(command_queue);
    ret = clFinish(command_queue);

    gettimeofday(&t1,0);
    double elapsed = (t1.tv_sec-t0.tv_sec)*1000000 + (t1.tv_usec-t0.tv_usec);

    printf("time taken = %lf microseconds\n", elapsed);
Run Code Online (Sandbox Code Playgroud)

我传输了大约 0.5 GB 的数据:

#define …
Run Code Online (Sandbox Code Playgroud)

profiling opencl

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

Java Flight Recorder选项不起作用,并且文件仅在持续时间设置的末尾存储

我有一个Java进程,并使用以下选项启动它(如此处建议:FR的参数):

-XX:+ UnlockCommercialFeatures -XX:+ FlightRecorder -XX:StartFlightRecording =持续时间= 2m,文件名= myflightrecord.jfr -XX:FlightRecorderOptions =最大大小= 100k,最大= 1m

为了获得飞行记录器信息。

我希望maxage = 1m只会给我一分钟的记录,而maxsize = 100k的文件大小不会大于100Kb,但是它们都没有按预期工作。

我遇到的另一个问题是我希望文件每次存储一次,假设每分钟存储一次。但是文件“ myflightrecord.jfr ”是空的,直到达到持续时间(在示例中为2 分钟)。

有什么方法可以在持续时间结束之前使飞行记录器冲洗?

ps:我使用的Java版本是JDK1.8.0_45

java parameters profiling

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

C程序在_platform_memmove $ VARIANT $ Haswell中占77%的时间

我正在分析用C编写的一些数字代码(profiler是Instruments,编译器clang在Mac OSX 10.11.6上).多达77.3%的运行时间用于_platform_memmove$VARIANT$Haswell.

在汇编输出中,上面的函数被调用DYLD-STUB$$memcpy.但是,memcpy我的C代码中没有(我确实有一些代码malloc).

更进一步,似乎汇编命令rep负责占用这么多时间.从这篇文章来看,似乎rep没有做任何有用的事情.为什么编译器会插入它?这memcpy是从哪里来的?

我也试过编译-g,但是_platform_memmove$VARIANT$Haswell几乎所有的时间都没有吞噬.

c macos profiling

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

VS2012:无法附加分析器。无法加载程序集VSPerfControl.Interop版本= 11.0.0.0

我正在Windows 7 Professional SP1上使用Visual Studio 2012(11.0.61219.00)Update 5。我想介绍一下NUnit测试,该测试是我过去在不同系统上使用VS2010完成的。这是我第一次在此框上尝试此操作,此框具有相当新的VS2012安装。当我尝试使用Analyze | Profiler将分析器附加到正在运行的进程时 探查器| 附加/分离菜单选项,我得到一个对话框,其中包含以下错误消息:

无法加载文件或程序集“ VSPerfControl.Interop,版本= 11.0.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。

我已经完成了以下诊断:

  • 验证VSPerfControl.Interop.dll是否存在于C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Team Tools \ Performance Tools文件夹中,文件版本为11.0.50727.1
  • 确保我以提升(管理员)模式运行Visual Studio
  • 将以上目录添加到系统的PATH变量中
  • 检查了C:\ Windows \ assembly,没有看到GAC中加载的DLL

我还没有找到任何有用的信息,所以我希望这里的人可以帮助我找出问题所在。

更新

该问题的最终解决方案可以在下面的helpfulPaul的评论中找到

profiling visual-studio visual-studio-2012

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

perf报告显示此函数"__memset_avx2_unaligned_erms"有开销.这是否意味着内存未对齐?

我试图使用perf工具来分析我的C++代码.实现包含带有SSE/AVX/AVX2指令的代码.除了该代码使用-O3 -mavx2 -march=native标志编译.我相信__memset_avx2_unaligned_erms函数是一个libc实现memset.perf表明这个功能有相当大的开销.函数名称表示内存未对齐,但在代码中我使用GCC内置宏显式对齐内存__attribute__((aligned (x)))可能是此函数有明显开销的原因以及为什么虽然内存明确对齐但调用了未对齐版本?

我已将样本报告附在图片上.在此输入图像描述

c++ profiling avx avx2 perf

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