c - snprintf 和 strncat 的执行速度如何比较?

标签 c string

我有一个程序可以在缓冲区中连接一些字符串。

我之前用过strncpy。在网上查看了一些使用 snprintf 而不是 strncat 的建议后,我切换到 snprintf。但是,我注意到这部分程序(字符串连接)的执行比之前有所延迟。这可能吗,snprintf 可以减慢程序的执行速度吗?如果不是,那么我会在我的计划中寻找一些其他因素。

if(iOffset<MAX_BUFF_SIZE && iOffset>0)
{
  ....... 
  iOffset += snprintf(cBuff+iOffset, sizeof(cBuff)-iOffset, "%s", "String1");
  ...... 
}

为了将字符串附加到 cBuff,我重复上述代码片段 12 次。

编辑:每 1 秒重复 12 次。

最佳答案

我想到了一些建议:

  • 不要过早优化你的程序
  • 当您准备好进行优化时,使用分析器等工具来发现真正的减速点

如果您不熟悉性能分析,或者真的很想知道计时细节,您可以随时在您的代码中包含计时器。请参阅有关 gettimeofday() 或 clock() 的引用资料以及有关这些代码的适当注意事项。本质上,您可以获得执行前的时间、执行后的时间并进行比较。注释掉您的代码行并放入旧代码并计时。

综上所述……这就是分析器为您所做的工作的一部分。找出“为什么”某些东西变慢有时很复杂,因为可能还有您不知道的其他考虑因素(即在硬件级别)。

与程序的总执行时间相比,一个函数执行 12 次可能微不足道。

关于c - snprintf 和 strncat 的执行速度如何比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7154971/

相关文章:

c - 如果包含另一个句子字符串,则从中删除该单词字符串

java - 重写java字符串方法

c - 第一个 tcp echo 客户端无法与第二个 tcp echo 客户端通信(文件描述符错误)

c - C 中 clock() 函数的准确性

c - 链接列表错误读取和错误消息

python - 计算单词数组中相同的连续字母

c++ - 为什么要为结构的多个数据成员而不是单个成员添加填充?

C 函数调用中的 C 原型(prototype)函数和默认参数提升

ios - NSString中的指数

c++ - 获取函数返回的一些垃圾