gpt4 book ai didi

c++ - strftime 性能与 snprintf

转载 作者:可可西里 更新时间:2023-11-01 18:36:13 61 4
gpt4 key购买 nike

我遇到了一个有趣的性能难题,但在我开始深入研究 glibc 并左右输入错误之前,我只是想获得可能存在的任何见解。

我有代码在其中一个函数中执行此操作:

gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
strftime( result, 24, "%Y-%m-%d %H:%M:%S", &local_tm);

其余代码与本题无关。当我用这个替换它时:

gettimeofday( &tv, 0);
localtime_r( &tv.tv_sec, &local_tm );
char result[25];
snprintf(result, sizeof(result), "%04d-%02d-%02d %02d:%02d:%02d",
local_tm.tm_year+1900, local_tm.tm_mon+1,
local_tm.tm_mday, local_tm.tm_hour, local_tm.tm_min,
local_tm.tm_sec);

平均而言,我的性能提升了 20%。

有没有人遇到过这个?这个操作系统是特定的吗?

最佳答案

POSIX 要求 strftime 调用 tzset()(或者像它调用了一样),这在 linux 系统上可能会 stat/etc/timezone 和其他文件,这很慢(与 snprintf 相比)。设置 TZ 环境变量通常会给它带来很大的提升。

正如评论中所说,它还本地化了消息。

关于c++ - strftime 性能与 snprintf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8174147/

61 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com