|
|
1
2
你在使用什么样的系统?在类Unix系统中,可以使用setItimer()在指定的时间段后向进程发送信号。这是实现所需的“主动睡眠”类型所需的工具。 设置计时器,然后循环直到您收到信号。 |
|
|
2
2
因为当你调用usleep时,CPU会在其他设备上工作一秒钟。所以当前的线程不使用任何处理器资源,这是一件非常聪明的事情。 积极的睡眠是绝对避免的,因为它是对资源的浪费(最终通过将电转换成热来破坏环境)。 不管怎样,如果您真的想这样做,您必须给处理器一些实际的工作,这是编译器优化无法解决的问题。例如
|
|
|
3
2
我假设您想找出f1()所花费的总时间(墙时钟时间、现实世界时间、您坐在那里观看应用程序运行的时间),而不是CPU时间。我会调查一下gprof是否能给你一个挂钟时间而不是处理时间。 我认为这取决于您的操作系统,但是您没有看到usleep占用配置文件中的任何进程时间的原因是,在技术上,它在这段时间内没有使用任何进程-其他正在运行的进程是(假设这是在*nix平台上运行的)。 |
|
|
4
1
在“sleep”函数中,您的应用程序没有运行。它被放入一个睡眠队列,操作系统将控制权转移到另一个进程。如果您希望应用程序运行,但什么都不做,空循环就是一个简单的解决方案。但是您会失去睡眠的所有好处(让其他应用程序运行,节省CPU使用率/功耗) 所以你的要求毫无意义。您不能让应用程序休眠,但仍在运行。 |
|
|
5
0
唯一的选择是做一个while循环。操作系统通常假定,如果您希望等待一段时间,您将希望向操作系统屈服。 能够获得微秒级的精确计时器也是一个潜在的问题。Afaik没有跨平台的计时方法(请有人纠正我,因为我喜欢跨平台的亚微秒计时器!D)。在win32下,您可以用一些queryperformanceCounter调用包围一个循环,以便在循环中花费足够的时间后进行计算,然后退出。 例如
|
|
|
6
0
这就是为什么分析“关闭百分比”时间很重要的原因。基本上,虽然您的函数的独占时间可能很短,但如果它执行I/O、DB等操作,等待外部资源,那么“switched out%”就是要注意的指标。 |
|
|
7
0
这是你对gprof的困惑,因为你关心的是挂钟时间。我用 this . |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |