为什么使用tm_isdst传递参数时,mktime花费这么多时间?

时间:2017-09-21 07:39:49

标签: multithreading mktime

我在多线程程序中调用mktime,并希望将字符串传递给Unix时间戳。然后我发现程序的性能很差,CPU空闲几乎降到0%。

    tm tm_;
    char buf[128]= {0};
    strcpy(buf, strValue.c_str());
    strptime(buf, "%Y-%m-%d %H:%M:%S", &tm_); 
    int ts  = mktime(&tm_);

我使用perf top来分析程序。它显示自旋锁占用了大部分CPU时间。(高达80%)。

当我设置tm_.tm_isdst = 0时,似乎不再调用自旋锁。

我的问题是:为什么将tm_isdst设置为0将保存旋转锁的调用?我读了mktime的源代码,似乎当tm_isdst设置为0时,它不会保存调用pthread_mutex_lock的localtime函数的任何调用。

mktime localtime

0 个答案:

没有答案