c - printf()函数的运行时间

标签 c printf

我只是想知道 printf() 函数的实际运行时间是多少。无论是O(n)还是Ω(n),我根据什么来决定printf函数的运行时间? 就像如果它只是在屏幕上打印一行,它可以是 O(1),因为它只需要特定数量的 CPU 周期来运行它,但是如果在循环中使用 printf 会怎么样?没有预定义 printf() 函数将被调用多少次,然后呢?会是 O(n) 还是什么?

最佳答案

print 所花费的时间始终与要打印的字符数成正比,因此它是 θ(N)(因此是 O(N) 和 Ω(N)),其中 N 是要打印的字符数。

<小时/>

但是 N 不是字符数?

在评估对字符串列表进行操作的算法(例如排序算法)时,研究字符串长度增长时会发生什么通常是无趣的,因为它会对所有算法产生相同的影响。我们更感兴趣的是研究当列表大小增长时会发生什么。为此,我们假设在这些情况下字符串的长度是恒定的。

例如,排序算法可能需要 O((N log N)*M),其中 N 是元素数量,M 是字符串长度。如果我们考虑字符串的长度恒定,则变为 O(N log N),并且 print 从 θ(M) 到 θ(1)。

关于c - printf()函数的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23189578/

相关文章:

c - 格式化中间带有连字符的条形码 - 分配问题

c++ - 无法理解 C/C++ 中++i 的输出

bash -/bin/bash printf 不适用于 C 以外的其他 LANG

c - 如何连接 2 个 C 字符串,而不覆盖任何终止空字符?

c++ - 来自 C++11 中 C99 的 fenv.h

c - printf 与 int C 组合时输出为 null

c - 使用 perf 分析 sleep 时间

将 ASCII 转换为 uint8

go - 如何在 Go 中打印 "enum"的字符串表示形式?

c - 多线程和多进程时 fprintf 的行为如何?