标签: profiling

Linux C++:如何分析由于缓存未命中而浪费的时间?

我知道我可以使用gprof来对我的代码进行基准测试.

但是,我有这个问题 - 我有一个智能指针,具有额外的间接级别(将其视为代理对象).

因此,我有这个额外的层,几乎影响所有功能,并带有缓存的螺丝.

有没有办法测量我的CPU因缓存未命中而浪费的时间?

谢谢!

c++ linux profiling caching

44
推荐指数
6
解决办法
3万
查看次数

linux perf:如何解读和查找热点

我今天尝试了linux的perf实用程序,但在解释其结果方面遇到了麻烦.我已经习惯了valgrind的callgrind,这当然是一种完全不同于基于采样的perf方法的方法.

我做了什么:

perf record -g -p $(pidof someapp)
perf report -g -n
Run Code Online (Sandbox Code Playgroud)

现在我看到这样的事情:

+     16.92%  kdevelop  libsqlite3.so.0.8.6               [.] 0x3fe57                                                                                                              ?
+     10.61%  kdevelop  libQtGui.so.4.7.3                 [.] 0x81e344                                                                                                             ?
+      7.09%  kdevelop  libc-2.14.so                      [.] 0x85804                                                                                                              ?
+      4.96%  kdevelop  libQtGui.so.4.7.3                 [.] 0x265b69                                                                                                             ?
+      3.50%  kdevelop  libQtCore.so.4.7.3                [.] 0x18608d                                                                                                             ?
+      2.68%  kdevelop  libc-2.14.so                      [.] memcpy                                                                                                               ?
+      1.15%  kdevelop  [kernel.kallsyms]                 [k] copy_user_generic_string                                                                                             ?
+      0.90%  kdevelop  libQtGui.so.4.7.3                 [.] QTransform::translate(double, double)                                                                                ?
+      0.88%  kdevelop  libc-2.14.so                      [.] __libc_malloc                                                                                                        ?
+ …

c++ linux performance profiling perf

43
推荐指数
5
解决办法
3万
查看次数

cProfile将数据保存到文件会导致混乱的字符

我在名为bot4CA.py的模块上使用cProfile,因此在控制台中输入:

python -m cProfile -o thing.txt bot4CA.py
Run Code Online (Sandbox Code Playgroud)

模块运行并退出后,它会创建一个名为thing.txt的文件,当我打开它时,那里有一些信息,其余的是一堆乱七八糟的字符,而不是一个整齐有序的数据文件,这就是我想要的.有没有人知道如何使用cProfile并最终得到整齐有序的数据表,比如在命令行中正常使用它,除了在文件中?以下是.txt文件中某些数据的示例:

{(   s)   build\bdist.win32\egg\colorama\winterm.pyi'   t      reset_all(   i   i   gpàÂs% ?geOÙHÌœE?{(   s-   build\bdist.win32\egg\colorama\ansitowin32.pyi¥
Run Code Online (Sandbox Code Playgroud)

我真正想要的是当您调用cProfile.run()时会发生什么,这会导致打印整齐有序的表格,显示所有功能的执行时间,而不是打印,保存在文件中,因为此程序相当大并且运行很多功能.

python command-line profiling file cprofile

43
推荐指数
3
解决办法
3万
查看次数

我可以介绍一下我的.zshrc/.zshenv吗?

这似乎是我的壳正在采取的方式太长启动.有什么方法可以对它进行分析,这样我就可以弄清楚是什么让它减慢了这么多?

profiling zsh

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

准确测量python函数所需的时间

我需要测量程序某些部分的时间(不是用于调试,而是作为输出中的一个特性).准确性很重要,因为总时间只有几分之一秒.

当我遇到timeit时,我打算使用时间模块,声称可以避免测量执行时间的一些常见陷阱.不幸的是,它有一个糟糕的接口,将一个字符串作为输入然后进行评估.

那么,我是否需要使用此模块准确地测量时间,或者时间是否足够?它指的是什么陷阱?

谢谢

python time profiling timeit

41
推荐指数
4
解决办法
3万
查看次数

你如何在ruby中查看调用堆栈的示例?

我正在研究不同的优化技术,我发现这篇文章分析效率代码?有人认为对调用堆栈进行采样比使用分析器更有效.基本思想是,如果您查看调用堆栈,您会看到应用程序最有可能花费大部分时间的位置,然后在那里进行优化.

这当然很有趣,他显然是这方面的专家,但我不知道如何在ruby中查看调用堆栈.在调试器中,我可以说"信息堆栈",但似乎只显示一行.

编辑:我看到Mike Dunlavey的评论:"我只想指出,如果你在调试器下运行,手动中断它,并显示调用堆栈......"

我只是不确定如何手动中断它并调整调用堆栈.

ruby optimization profiling ruby-on-rails

41
推荐指数
2
解决办法
2万
查看次数

计算数据框中列的摘要统计信息

我有一个以下形式的数据框(例如)

shopper_num,is_martian,number_of_items,count_pineapples,birth_country,tranpsortation_method
1,FALSE,0,0,MX,
2,FALSE,1,0,MX,
3,FALSE,0,0,MX,
4,FALSE,22,0,MX,
5,FALSE,0,0,MX,
6,FALSE,0,0,MX,
7,FALSE,5,0,MX,
8,FALSE,0,0,MX,
9,FALSE,4,0,MX,
10,FALSE,2,0,MX,
11,FALSE,0,0,MX,
12,FALSE,13,0,MX,
13,FALSE,0,0,CA,
14,FALSE,0,0,US,
Run Code Online (Sandbox Code Playgroud)

如何使用Pandas计算每列的摘要统计信息(列数据类型是可变的,有些列没有信息

然后返回表单的数据框:

columnname, max, min, median,

is_martian, NA, NA, FALSE
Run Code Online (Sandbox Code Playgroud)

等等

python csv profiling dataframe pandas

41
推荐指数
3
解决办法
9万
查看次数

Clojure的分析工具?

有没有人知道Clojure的一个好的分析工具或库?

我更喜欢可以在REPL中使用的东西,就像(with-profiling ...)Allegro Common Lisp那样.

沿着这些路线还有什么吗?

或者您对使用Clojure的(非商业)Java分析器有任何经验吗?

profiling clojure

40
推荐指数
4
解决办法
9789
查看次数

在大型文本文件中搜索字符串 - 在python中分析各种方法

这个问题已被多次询问.花了一些时间阅读答案后,我做了一些快速分析,试用了前面提到的各种方法......

  • 我有一个600 MB的文件,有600 行字符串(来自DMOZ项目的类别路径).
  • 每行的条目都是唯一的.
  • 我想加载文件一次继续搜索数据中的匹配项

我在下面尝试的三种方法列出了加载文件所花费的时间,在任务管理器中搜索负匹配和内存使用的时间


1) set :
    (i)  data   = set(f.read().splitlines())
    (ii) result = search_str in data   
Run Code Online (Sandbox Code Playgroud)

加载时间〜10s,搜索时间~0.0s,内存使用量~1.2GB


2) list :
    (i)  data   = f.read().splitlines()
    (ii) result = search_str in data
Run Code Online (Sandbox Code Playgroud)

加载时间~6s,搜索时间~0.36s,内存使用量~1.2GB


3) mmap :
    (i)  data   = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
    (ii) result = data.find(search_str)
Run Code Online (Sandbox Code Playgroud)

加载时间〜0s,搜索时间~5.4s,内存使用量~NA


4) Hash lookup (using code from @alienhard below):   
Run Code Online (Sandbox Code Playgroud)

加载时间〜65s,搜索时间~0.0s,内存使用量~250MB


5) File search (using code from @EOL below):   
   with open('input.txt') …
Run Code Online (Sandbox Code Playgroud)

python performance search profiling large-files

40
推荐指数
3
解决办法
3万
查看次数

与Mongos连接时system.profile集合中缺少用户字段

我们有一个MongoDB集群,客户端通过Mongos实例连接到它.群集中的各个mongo都在运行--auth,并且Mongo --keyfile在与它们通信时使用.我们正在分析慢速查询,但没有获取通过Mongo的查询的用户名.

为了更清楚:

  1. 如果我直接连接到其中一个Mongo,进行身份验证并运行查询,那么我可以在system.profile之后查看该集合,并且该user字段将填充我的用户名.

  2. 如果我通过mongos连接,验证并运行查询,则system.profile集合包含有关查询的分析信息,但用户字段为空.

身份验证是必需的,我无法在没有首先进行身份验证的情况下通过Mongo运行查询,但用户名似乎似乎没有包含在性能分析信息中,我们真的希望能够看到它.

有任何想法吗?我可以对配置进行任何更改吗?

authentication profiling mongodb

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