【发布时间】:2013-10-31 23:03:19
【问题描述】:
我正在尝试测量系统调用的时间量,并尝试在此程序中使用time(0) 和gettimeofday(),但每当我使用gettimeofday() 时,它都会出现段错误。我想我可以使用time(0),但我想知道为什么会这样。我知道你们可以看看它,看看问题所在。请不要对我大喊大叫!
我想获取时间,但不想将其保存在任何地方。
我已经尝试了所有我能想到的代码组合,但我在这里粘贴了最简单的版本。我是 C 和 Linux 的新手。我查看了 .stackdump 文件,但它对我来说毫无意义。
GetRDTSC 在 util.h 中,它确实是 rdtsc(),正如人们所预料的那样。现在它设置为 10 次迭代,但稍后循环将运行 1000 次,没有printf。
#include <stdio.h>
#include <time.h>
#include "util.h"
int main() {
int i;
uint64_t cycles[10];
for (i = 0; i < 10; ++i) {
// get initial cycles
uint64_t init = GetRDTSC();
gettimeofday(); // <== time(0) will work here without a seg fault.
// get cycles after
uint64_t after = GetRDTSC();
// save cycles for each operation in an array
cycles[i] = after - init;
printf("%i\n", (int)(cycles[i]));
}
}
【问题讨论】:
-
只是想了解如何编译这段代码?
标签: c linux time segmentation-fault