我有一个使用 Rust 作为基础的项目,能够通过用 Rust、Go 和 C++ 编写的共享库来扩展其功能。我要添加的功能不会占用大量内存,但我同样不想使用超出我需要的内存,同时也尝试在实现扩展库的目标的同时减少开发时间.
如果我用 Rust、Go 或 C++ 编写相同的代码并为它们创建共享库,生成的库文件大小是否相同?当核心应用程序导入并使用时,无论源语言是什么,它都会占用相同的内存量吗?
如果我用 Rust、Go 或 C++ 编写相同的代码
不太可能,但对于最琐碎的软件来说。
并为他们创建了一个共享库,生成的库文件大小是否相同?当核心应用程序导入并使用时,无论源语言是什么,它都会占用相同的内存量吗?
不。语言的二进制大小、链接和运行时组件会影响共享库占用的空间。
我希望 C++ 版本占用最少的内存,因为我相信标准库通常是动态链接的(至少在 Windows 外部)并且可以在进程之间共享,尽管编码风格也是一个因素(复制 v 分享 v 移动)。
Rust 可能是下一个,因为标准库是静态链接的,并且它同样没有运行时。
Go 几乎肯定是最后一个,因为它也倾向于使用静态链接 并且有一个重量级的运行时并且有一个垃圾收集器,通常需要双倍的实际内存来完成它的工作。
尽管这里的一个混杂因素是 C++ 和 Rust 都有很强的单态倾向(语言和风格),这会增加最终二进制文件的大小。