相关疑难解决方法(0)

定时器功能使用C++以纳秒为单位提供时间

我希望计算API返回值所花费的时间.这种行动所花费的时间是纳秒秒.由于API是C++类/函数,我使用timer.h来计算相同的:

  #include <ctime>
  #include <cstdio>

  using namespace std;

  int main(int argc, char** argv) {

      clock_t start;
      double diff;
      start = clock();
      diff = ( std::clock() - start ) / (double)CLOCKS_PER_SEC;
      cout<<"printf: "<< diff <<'\n';

      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了以秒为单位的时间.如何在毫秒秒内获得相同的精度?

c c++ timer

101
推荐指数
8
解决办法
20万
查看次数

在C#中的特定时间后退出循环

我的项目(C#,VS2010,.NET 4.0)要求特定for循环必须在200毫秒内完成.如果没有那么它必须在此持续时间之后终止而不执行剩余的迭代.循环通常i = 0达到约500,000到700,000,因此总循环时间变化.

我读过以下类似的问题,但在我的案例中没有帮助:

  1. 在C++中经过30ms的时间之后退出循环的最佳方法是什么
  2. 如何在特定时间执行循环

到目前为止,我已经尝试使用一个Stopwatch对象来跟踪已用时间,但它对我不起作用.到目前为止,我尝试了两种不同的方法:

方法1.比较for循环中的经过时间:

Stopwatch sw = new Stopwatch();
sw.Start();

for (i = 0; i < nEntries; i++) // nEntries is typically more than 500,000
{
      // Do some stuff
      ...
      ...
      ...

      if (sw.Elapsed > TimeSpan.FromMilliseconds(200))
          break;
}

sw.Stop();
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为完成if (sw.Elapsed > TimeSpan.FromMilliseconds(200))时间超过200毫秒.因此在我的情况下毫无用处.我不确定是否 TimeSpan.FromMilliseconds()通常需要这么长时间,或者仅仅因为某些原因而在我的情况下.

方法2.创建一个单独的线程来比较时间:

Stopwatch sw = new Stopwatch();
sw.Start();                    
bool bDoExit = false;
int msLimit = 200;

System.Threading.ThreadPool.QueueUserWorkItem((x) => …
Run Code Online (Sandbox Code Playgroud)

c# benchmarking

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

在指定持续时间内运行函数:使用&lt;chrono&gt;的C ++

我需要实现一个函数,该函数应在指定的持续时间内执行指定的任务,并将其作为参数传递给它(std::chrono::milliseconds)

我想出了代码:

void Run(std::chrono::milliseconds ms)
{
    std::chrono::time_point<std::chrono::system_clock> start, end;
    start = std::chrono::system_clock::now();
    std::chrono::duration<double> elapsed_seconds = end - start;
    while (elapsed_seconds <= (ms / 1000))
    {
        std::cout << "Running" << std::endl;
        end = std::chrono::system_clock::now();
        elapsed_seconds = end - start;
    }
}

int main()
{
    {
        std::chrono::milliseconds ms(30000);
        Run(ms);
        system("Pause");
    }
Run Code Online (Sandbox Code Playgroud)

我想将代码打印Running30秒钟,然后退出。但是它没有这样做。我该如何实现这种行为C++ <chrono>

c++ c++11 c++-chrono

2
推荐指数
1
解决办法
2028
查看次数

标签 统计

c++ ×2

benchmarking ×1

c ×1

c# ×1

c++-chrono ×1

c++11 ×1

timer ×1