问题标签 [getrusage]
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.
c - 让 getrusage() 在 C 中测量系统时间
我想测量执行某些代码所需的系统时间。为此,我知道我会将上述代码夹在两次 getrusage() 调用之间,但我得到了一些意想不到的结果......
我希望这会产生两个不同的数字,但是唉!在看到我的电脑思考了一两秒后,结果如下:
我没有使用 getrusage() 对吗?为什么这两个数字不应该不同?如果我从根本上错了,是否有另一种方法可以使用 getrusage() 来测量某些源代码的系统时间?感谢您的阅读。
c - Linux 上 `ru_maxrss` 的单位是什么?
这是从man getrusage
但是没有具体说明单位是什么。
我看到 FreeBSD 的文档说它以千字节为单位,但我不确定它在 Linux 上是什么单位。
python - 带有 RUSAGE_CHILDREN 的 Python getrusage 行为异常?
最近我计划开发一个在线裁判系统(如spoj)。我已经用python编写了一个判断脚本。它每收到一个提交的代码就分叉,然后编译代码并用于subprocess.Popen
启动程序。但是当我使用 获取程序的内存使用情况时resource.getrusage(resource.RUSAGE_CHILDREN)
,它会返回分叉的 python 进程而不是子进程的内存。
下面是我的一些代码:
cpuusage
并且memoryusage
是由 创造的共享内存multiprocessing.Value
,其值为memoryusage
12M。但是通过top
,我发现,分叉的python进程的内存使用量是12M,而子进程是900K。我的代码有什么问题吗?对不起,我的英语不好。
c++ - 基准代码 - 除以迭代次数吗?
我和我的朋友就对 C/C++ 代码(或一般代码)进行基准测试进行了一次有趣的讨论。我们编写了一个简单的函数,用于getrusage
测量给定代码段的 cpu 时间。(它测量运行特定功能所需的 CPU 时间)。让我给你举个例子:
我们争论过,我们是否应该将 (es) 除以迭代次数?我的意思是,当我们不划分它时,结果是可接受的形式(例如 3.0 s),但是当我们划分它时,它给我们的结果类似于 2.34385e-07 s ...
所以这是我的问题:
- 我们是否应该将(es)除以迭代次数,如果是,为什么?
- 我们如何以更易于阅读的形式打印 2.34385e-07 s?(比方说,它花了 0.00000003 秒)?
我们是否应该先调用一次函数,然后测量迭代的 cpu 时间,如下所示:
/li>
c - getrusage 在 ru_utime.tv_usec 和 ru_utime.tv_sec 中返回零
对于以下代码,getrusage 在ru_utime.tv_usec
和中返回零ru_utime.tv_sec
。
代码:
输出:
编译后的代码Linux version 2.6.18-308
在 ARM 板上运行可执行文件Linux version 3.8.1-2.0
c++ - 如何查找进程的空闲时间
我有一个在早期版本中需要一些时间的过程。现在,当前版本中的相同过程需要更多时间。但是与之前相比,代码没有变化。我看到的一个观察结果是,与早期版本相比,服务器上还有一些其他进程正在消耗高 CPU。所以我怀疑我的进程没有得到 cpu 时间,这就是为什么它需要更多时间。但我需要证明这个过程大部分时间都在等待(空闲)。所以为此我正在考虑使用getrusage()
. 但是因为我不确定如何使用它来计算进程空闲时间。谁能告诉我一个简单的例子,说明如何getrusage
专门用于计算进程的空闲时间。
提前致谢。
c++ - C++ 对象分配和释放
以下程序在一个循环中创建对象并将引用存储在向量中以供将来删除。
我看到了一个不寻常的行为,即使对象在第二次迭代中被删除,与对象创建相比,getrusage 提供了更高的常驻内存。
执行环境在 Linux Kernel 3.2.0-49-generic 中。
输出
java - 使用 JAVA 检查 Internet 使用情况
如何使用 Java 代码检查上传和下载数据容量?(在互联网或局域网中)
c - 连续两次调用 getrusage 是否保证会产生越来越多的结果?
在一个程序中getrusage()
,为了通过减法获得任务的时间而调用了两次,我曾经看到一个断言,说任务的时间应该是非负的,失败。当然,这不能轻易复制,尽管我可以编写一个专门的程序来更容易地复制它。
我试图找到一个getrusage()
随着执行而增加的保证,但我系统上的手册页(x86-64 上的 Linux)和这个与系统无关的描述都没有明确说明。
该行为是在物理计算机上观察到的,该计算机具有多个内核,并且 NTP 正在运行。
我应该报告我正在使用的操作系统的错误吗?getrusage()
当我期望随着时间的推移而增加时,我要求太多了吗?
c - getrusage 的工作原理以及 rusage 结构中的真正内容是什么?
我试图了解如何
工作以计算我的一个程序的运行时间。
我红了手册页,可能 10 次,但仍然无法得到它。试图在网上找到一些东西,但只找到有关此功能的手册页。
我不清楚的是存储在 rusage 结构中的内容 - 手册页不是很清楚 - 所以我尝试使用调试器运行它并直接查看里面的内容,但仍然不明白,尤其是这两个结构- timeval ru_utime 和 timeval ru_stime - 工作。
它们内部的内容假设不同的值,有时为 0,有时为 2000 等。
我运行了一个带有 for 循环的简单程序,该循环不断地分配和释放内存。我用秒表实际查看需要多少时间,花了 5.23 秒。但我在这些结构中看到的似乎完全不相关:
循环前:
ru_utime = { tv_sec = 0, tv_usec = 1000}, ru_stime = { tv_sec = 0, tv_usec = 1000}
循环后:
ru_utime = { tv_sec = 4, tv_usec = 677000}, ru_stime = { tv_sec = 0, tv_usec = 2000}
所以,谁能给我解释一下或者给出一些很好的链接来解释这个?
我将不胜感激。