c标准函数完全优化

c标准函数完全优化,c,optimization,C,Optimization,你好, 我正在研究一些字符串函数,因为我需要在一个句子中搜索不同的单词 我只是想知道c标准函数是否得到了充分优化 例如,类似以下功能: memchr,strstr,strspn,strchr等 就高性能而言,这是我所需要的。还有更好的吗 关于,您几乎肯定会发现,标准库函数已经尽可能地进行了优化,它们可能会超过您在C中编写的任何代码 请注意,这是针对一般情况的。如果对函数有一些限制,或者对数据本身有一些额外的信息,那么您可以让代码运行得更快,因为您拥有这些限制或信息的优势 例如,我为malloc编

你好,

我正在研究一些字符串函数,因为我需要在一个句子中搜索不同的单词

我只是想知道c标准函数是否得到了充分优化

例如,类似以下功能:
memchr
strstr
strspn
strchr

就高性能而言,这是我所需要的。还有更好的吗


关于,

您几乎肯定会发现,标准库函数已经尽可能地进行了优化,它们可能会超过您在C中编写的任何代码

请注意,这是针对一般情况的。如果对函数有一些限制,或者对数据本身有一些额外的信息,那么您可以让代码运行得更快,因为您拥有这些限制或信息的优势

例如,我为
malloc
编写了C代码,它将提供的
malloc
库吹走了,因为我知道应用程序请求的字节数永远不会超过256字节,所以每次请求时我只给出256字节。是的,这是对内存的浪费,但它允许速度的提高超出了一般情况


但是,在一般情况下,最好还是坚持使用提供的东西。

完全优化?优化了什么


是的,stdlib的C函数编写得非常高效,并且经过了一年的测试/调试,因此您绝对不应该担心其中的大多数。

假设您总是将数据与16字节边界对齐,并且每次分配大约额外的16字节,那么肯定可以加快大多数stdlib例程的速度


但是假设strlen事先不知道,或者读取一个字节太多会导致分段错误,我就不麻烦了。

这忽略了一个要点。。。仅仅因为这些函数针对它们所做的事情进行了优化,并不意味着它们是解决问题的最佳工具,在本例中是文本搜索。唯一相关的功能是
strstr
,如果在多个句子中搜索同一个单词或在同一个句子中搜索多个单词,它的效率要比其他方法低得多。Jim,我认为这将包含在“一些限制”功能中,但作为“额外信息”,所以我会澄清。如果你知道你不会使用一般情况,你可以优化标准库函数之外的函数。我不希望有人能从一般的陈述中推断出有像Boyer Moore等算法。。。见我的评论/上面的链接。这并不是关于限制或额外的信息,而是关于在多个字符串上操作时速度的显著提高,在多个字符串上,昂贵的固定设置时间是分摊的。如果在许多句子中搜索相同的单词,有更快的方法。参见,例如。,
c89
gcc (GCC) 4.7.2