【发布时间】:2017-01-02 10:21:25
【问题描述】:
strcmp 是否比strncmp 慢,因为可以为其提供预先计算的字符串长度,但strcmp 没有收到此类信息?
我正在写一个解释器。我知道这些功能都经过优化。我想知道什么是更好的方法(就性能而言),因为无论如何我都会扫描并且我会知道偏移位置和长度。
【问题讨论】:
-
不是真的,无论如何你必须扫描。请记住,它最多,不完全是。
-
那些反对票必须是因为“缺乏研究”(根据其工具提示)。对常见实现的粗略搜索显示没有使用长度。两者都只是测试
null字符。 -
对于实际调用,这取决于限制与字符串长度的比较。如果您有一个 1,000 字节的字符串,但指定
limit = 10,它会更快。但是如果你指定limit = 900,它可能会更慢。 -
@Malina
strncmp()仍然需要检查空字符,因为即使limit更大,它也必须停止在那里复制。 -
strncmp()的参数不是给定的长度,而是最大长度。
标签: c string performance optimization strcmp