我有一个用C编写的静态库,没有动态内存分配。
到目前为止,该库只在常规i386 Linux的应用程序中使用,其中CPU和内存充足。
我现在需要尝试为嵌入式实时ARM9系统(由第三方提供)构建一个版本的库。在此之前,我必须给出一些内存占用和CPU使用的粗略估计。
对于内存占用,我在我的i386机器上构建了一个小应用程序,与我的库静态链接,它执行我的库的所有功能。检查这个应用程序的驻留内存将给我一个库内存占用的大致估计,这大致正确吗?有没有更好的方法来衡量它?
对于估计CPU使用情况,我很茫然。我当然可以在我的i386系统上运行上面提到的测试应用程序,但我不知道它会给我什么指标(如果有的话),可以转化为与ARM系统相关的东西。有办法吗?
你的内存估计对我来说听起来很不错,只要你为ARM9编译它。实际上,如果您在没有调试信息的情况下交叉编译库,并且您希望库的所有功能都在最终应用程序中使用,那么库的文件大小是一个相当不错的估计。唯一不可行的情况是,如果您有很多零初始化的全局(或静态)变量。当然,运行时内存分配是另一回事,但您已经考虑过了。
基于x86代码的大小估计可能在同一范围内,但真的不应该被信任。大小也因编译器而异,所以尽量匹配它,但任何最新的ARM编译器都可以对进行粗略的估计。
至于CPU估计,如果不测量它,就不可能给出一个数字。它是CPU的架构效率、编译器优化的有效性、时钟速率、内存速度、总线速度、缓存大小、由其他运行任务引起的缓存压力等等的函数。变量太多了。
你可以做的一件事是使用大0符号来说明算法在不同输入下的性能。
我可能会说"轻"或"重"。你可能已经知道哪个适合了。