是否有C函数的时间(成本)表?

时间:2010-04-13 12:03:40

标签: c optimization performance

优先用于x86-32 gcc实现

4 个答案:

答案 0 :(得分:9)

考虑到现代C编译器像疯了一样优化,我认为你会发现时间非常依赖于情境。在一种情况下,什么是慢速操作可能要么优化到更快的操作,要么编译器可能能够使用相同指令的更快的8或16位版本等。

答案 1 :(得分:1)

这取决于具体情况,但这可能会根据平台,硬件,操作系统,功能和功能输入而有很大差异。一般的答案是“不”。它还取决于你所说的“时间”;除了其他方面,还有执行时间和时钟时间。

确定某事需要多长时间的最佳方法是尽可能地运行它。如果性能是一个问题,分析和完善将是您最好的选择。

某些实时系统会限制操作需要多长时间,但这并非特定于C。

答案 2 :(得分:1)

我认为这样的事情真的不可能。当你考虑给出不同参数的同一程序的时间差异时。例如,假设函数costOf执行了您想要的操作,其成本更高,memcpyprintf。既?

costOf(printf("Hello World")) > costOf(memcpy(a, b, 4))
costOf(printf("Hello World")) < costOf(memcpy(a, b, 4 * 1024 * 1024 * 1024))

答案 3 :(得分:0)

恕我直言,这是一个微观优化,在执行所有分析之前,应该忽略它。通常,库例程不是执行时的消费者,而是资源或程序员创建的函数。

我还建议花更多时间在一个项目的质量和稳健性上,而不是担心微观优化。随着计算能力的提高和内存大小的增加,与质量和稳健性相比,客户的规模和执行时间不再是问题。客户愿意等待产生正确输出的程序(或正确执行所有要求)并且不会崩溃,而不是要求快速程序出错或使系统崩溃。

回答您的问题,正如其他人所说,库函数的执行时间取决于库开发人员,平台(硬件)和操作系统。某些平台可以更快地或在相同的时间内执行浮点指令以执行整数运算。有些库会将功能委托给操作系统,而其他库则将自己打包。有些函数速度较慢,因为它们可以在各种平台上运行,而其他库中的相同函数可以更快,因为它们是针对特定平台定制的。

使用您需要的库函数,不要担心它们的速度。使用第三方测试的库而不是重写您自己的代码。如果程序执行速度非常慢,请查看设计和配置文件。也许您可以通过使用面向数据的设计而不是面向对象的设计或程序编程来获得更快的速度。同样,集中精力开发高质量和强大的代码,同时学习如何更有效地生成软件。