线程本地和堆栈分配变量之间的性能

时间:2014-01-09 13:37:23

标签: c++ c performance gcc thread-local

static const char* objToStr(Obj o)
{
    static __thread char s[64];
    snprintf(s, sizeof(s), "Obj: ...", ...);
    return s;
}

static const char* objToStr2(Obj o, char* s, size_t len)
{
    snprintf(s, len, "Obj: ...", ...);
}

int main()
{
    Obj o;
    ...
    const char* s1 = objToStr(o);

    char buf[64];
    const char* s2 = objToStr2(o, s2, sizeof(buf));
}

只是想知道因为objToStr在语法上必须使用起来更简单,而且从我的基础研究来看,gcc中的线程本地存储是内联的,并且本身不应该导致性能损失。我能想到的唯一缺点是objToStr2的缓存局部性优于线程本地情况。

还有其他想法吗?

0 个答案:

没有答案