将程序分成多个文件比使用一个大文件更重吗?
Is dividing a program into multiple files heavier than using one big file?
我目前正在开发一个嵌入式应用程序,问题是我已经达到了整个应用程序实际上对于 RAM 来说太重的地步。
所以我问自己这个问题:如果我将一些文件折射成一个大文件,我编译的程序会不会更轻?
谢谢。
如果您的代码在 "big file" 和 "many files" 方法中 100% 相同,主要区别在于变量和函数的地址将通过以下方式解析(即填充到二进制文件中)链接器而不是编译器。这通常会产生完全相同的二进制文件。
但是,有些架构具有 "short relative addressing modes"(例如摩托罗拉 68k)用于调用和引用,其中 "big file approach" 实际上可能会导致(稍微)更小的代码和数据。编译器通常不能将这种短寻址模式插入到用于链接的模块中,因为在编译时不知道在生成的程序中引用的距离有多远。
因此,根据您使用的 CPU,您实际上可能会获得几个字节。
不,一般不会。
源代码组织不影响内存使用。
可能可以重构程序以使用更少的内存,例如,如果您有一些功能同时使用大量但从未 运行 并行,但这在单个文件中同样可行。它只需要明确共享。
我目前正在开发一个嵌入式应用程序,问题是我已经达到了整个应用程序实际上对于 RAM 来说太重的地步。
所以我问自己这个问题:如果我将一些文件折射成一个大文件,我编译的程序会不会更轻?
谢谢。
如果您的代码在 "big file" 和 "many files" 方法中 100% 相同,主要区别在于变量和函数的地址将通过以下方式解析(即填充到二进制文件中)链接器而不是编译器。这通常会产生完全相同的二进制文件。
但是,有些架构具有 "short relative addressing modes"(例如摩托罗拉 68k)用于调用和引用,其中 "big file approach" 实际上可能会导致(稍微)更小的代码和数据。编译器通常不能将这种短寻址模式插入到用于链接的模块中,因为在编译时不知道在生成的程序中引用的距离有多远。
因此,根据您使用的 CPU,您实际上可能会获得几个字节。
不,一般不会。
源代码组织不影响内存使用。
可能可以重构程序以使用更少的内存,例如,如果您有一些功能同时使用大量但从未 运行 并行,但这在单个文件中同样可行。它只需要明确共享。