问题标签 [perf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - perf中的硬件事件和硬件缓存事件有什么区别?
当我输入perf list
命令时,我发现有两种事件:Hardware event
和Hardware cache Event
。两者有什么区别 ?
cache-misses
和 和有什么不一样LLC-misses
?缓存未命中是否包括 LLC-misses ?
perf
当我测试程序时,工具会降低总体性能吗?
c++ - 如何提出高缓存未命中率示例?
我正在尝试提出一个具有高缓存未命中率的示例程序。我想我可以尝试像这样逐列访问矩阵:
当我用-O0
标志编译它并使用它运行时,perf stat -r 5 -B -e cache-references,cache-misses ./a.out
它给了我:
这对我的目的来说已经足够好了。但是,如果我继续并将矩阵大小更改为2000x2000
它给出:
如果我进一步增加它,3000x3000
我会得到:
这很奇怪,因为随着大小的增加,我希望获得更多的缓存未命中率。我需要尽可能独立于平台的东西。计算机体系结构课很久以前,所以任何见解都会受到欢迎。
笔记
我说我需要一些相对独立于平台的东西,但这些仍然是我的规格:
- 英特尔® 酷睿™ i5-2467M
- 4 GiB 内存
- 64 位 Ubuntu 12.04
linux - 为什么 perf 不报告缓存未命中?
根据perf tutorials,perf stat
应该使用硬件计数器报告缓存未命中。但是,在我的系统(最新的 Arch Linux)上,它没有:
我错过了什么?我已经搜索了手册页和网络,但没有发现任何明显的东西。
编辑:如果重要的话,我的 CPU 是 Intel i5 2300K。
linux - 记录导致主要页面错误的内存访问
有谁知道如何获取导致页面错误的内存访问(指针)?我主要对主要的页面错误感兴趣。
关于我想要实现的目标的一些背景知识。我有一个内存占用很大的应用程序(数据库),我想将分页与对大型数据结构(例如使用 mmap() 分配的表、索引)的访问相关联。进程的映射很容易从 /proc//maps 中检索。现在,如果我有导致页面错误的内存访问,我可以跟踪在访问每个数据结构时导致了多少页面错误。
我认为 perf 或 systemtap 可以完成这项工作。有任何想法吗?
android - Android Systrace 跟踪文件格式
Android systrace工具,通过 ADB调用atrace工具。但是,我不太了解跟踪文件的格式。显然它与 linux ftrace工具非常相似,但有一些区别。主要区别在于它不使用System.Map文件,但它将所有信息包含在跟踪文件中。此外,还有特定于 android 的新 B|E 条目。
在 Android 源代码中有一些关于这种格式的信息:http ://androidxref.com/4.1.1/xref/external/chromium-trace/src/tracing/linux_perf_importer.js
但是,在该文档中,我们可以看到该格式属于 Linux Perf Tool。我不这么认为,linux perf 作为输出提供了一种非常不同的格式...(除非某些特殊配置处于活动状态...)
我的问题是:有人知道我在哪里可以找到关于使用adb 的atrace工具生成的 android 跟踪文件的官方文档吗?
这种格式你熟悉吗?
提前致谢 !
linux - 使用“perf”获取每个线程的 CPU 使用率(任务时钟)
全部
我正在运行多线程应用程序并想测量每个线程的 CPU 使用率。例如,我想看看
线程 0 17696.260293 任务时钟
线程 1 244112.601727 任务时钟
...
谁能让我知道如何使用“perf”或其他一些性能监控工具获取此类信息?
谢谢!
c# - 当索引不包含在另一个列表中时,按索引从列表中删除
有没有办法让这段代码更有效率?
这就是我所做的,aList 包含对象而不是整数,因此需要列表中对象的索引。不确定 includeRows.Remove() 是否会降低或提高效率,includeRows 刚刚更改为 HashSet。
linux - 使用 perf 监控原始事件计数器
我正在尝试在具有多个(物理)处理器的(Intel Xeon)机器上测量某些硬件事件。具体来说,我想知道为读取“非核心”数据发出了多少请求。
我在 Intels 文档中找到了 OFFCORE_REQUESTS硬件事件,它给出了事件描述符 0xB0 和数据需求,附加掩码 0x01。
那么告诉 perf 记录事件 0xB1 (即0xB0 | 0x01
)并将其称为:
或者这是不正确的?因为perf report
这样输入的事件没有显示输出。
perf 文档在这方面相当稀疏,除了一个教程条目没有说明它是哪个事件(尽管这个对我有用),或者它是如何编码的......
任何帮助是极大的赞赏。
c# - 确定字符串是否为合法 XML 元素名称的有效方法
我做了一个符合 W3 规范的简单实现。在这里,我只是简单地持有不同的合法字符集(合法的起始字符与后面的字符不同)并使用 string.Contains。但是合法字符的集合非常大(无论如何对我来说),并且只在候选字符串的时间检查一个字符变得有点昂贵。
目前这不是一个真正的问题,因为我需要在每次执行批处理(需要几秒钟、几分钟甚至几小时)时验证几个字符串一次(需要几毫秒),但我很想知道其他人会建议什么.
这是我的简单实现:
虽然我没有费心构建它,但我认为在类型初始化程序中创建一个排序列表,然后对列表进行二进制搜索(而不是使用 string.Contains 进行线性搜索)以检查每个字符会在空间、时间上取得良好的平衡和复杂性。但也许你有其他(更好!)的想法?