相关疑难解决方法(0)

gcc原子内置物是如此之慢是否正常?

我有一个应用程序,我必须在多线程方法中增加一些统计计数器.递增必须是线程安全的,所以我决定使用gcc atomic builtins __sync_add_and_fetch()函数.为了了解它们的影响,我做了一些简单的性能测试,发现这些函数比简单的前/后递增慢得多.

这是我创建的测试程序:

#include <iostream>
#include <pthread.h>
#include <time.h>

using namespace std;

uint64_t diffTimes(struct timespec &start, struct timespec &end)
{
  if(start.tv_sec == end.tv_sec)
  {
    return end.tv_nsec - start.tv_nsec;
  }
  else if(start.tv_sec < end.tv_sec)
  {
    uint64_t nsecs = (end.tv_sec - start.tv_sec) * 1000000000;
    return nsecs + end.tv_nsec - start.tv_nsec;
  }
  else
  {
    // this is actually an error
    return 0;
  }
}

void outputResult(const char *msg, struct timespec &start, struct timespec &end, uint32_t numIterations, uint64_t val)
{
  uint64_t …
Run Code Online (Sandbox Code Playgroud)

c++ performance gcc atomic built-in

8
推荐指数
2
解决办法
8242
查看次数

标签 统计

atomic ×1

built-in ×1

c++ ×1

gcc ×1

performance ×1