估算 C 库的内存占用和 CPU 使用情况

Estimating memory footprint and CPU usage for a C library

我有一个用 C 编写的静态库,没有动态内存分配。

到目前为止,该库仅用于常规 i386 Linux 的应用程序,其中 CPU 并且内存充足。

我现在需要尝试为嵌入式实时 ARM9 系统构建一个版本的库(由第 3 方提供)。在此之前,我必须粗略估计内存占用量和 CPU 使用情况。

对于内存占用,我在我的 i386 机器上构建了一个微型应用程序,静态链接到我的库,它执行我的库的所有功能。检查此应用程序的驻留内存会给我一个关于我的库内存占用的粗略估计是否大致正确?有没有更好的测量方法?

为了估算 CPU 使用情况,我不知所措。我当然可以 运行 上面提到的测试应用程序,在我的 i386 系统上,但我不知道哪些指标会给我(如果有的话)可以转化为与 ARM 系统相关的东西。有办法吗?

你的内存估计对我来说听起来不错,只要你为 ARM9 编译它。实际上,如果您在没有调试信息的情况下交叉编译该库,并且您希望在最终应用程序中使用该库的所有功能,那么该库的文件大小是一个很好的估计。唯一行不通的方法是,如果您有很多零初始化的全局(或静态)变量。 运行当然,时间内存分配是另一回事,但您已经考虑到了这一点。

基于 x86 代码的大小估计可能大致相同,但确实不可信。大小也因编译器而异,因此请尽可能匹配它,但任何最新的 ARM 编译器都可以进行 粗略 估计。

至于 CPU 估计,如果不进行测量,就不可能给出数字。它是 CPU 的架构效率、编译器优化的有效性、时钟速率、内存速度、总线速度、缓存大小、由其他 运行 任务引起的缓存压力等的函数,等等,等等。变量太多了。

您可以做的一件事是使用大 O 表示法来说明算法在不同输入上的性能。

我可能只会说 "light" 或 "heavy"。您可能知道哪些适合。