用不同语言编写的共享库使用相同的内存量吗?

问题描述 投票:0回答:1

我有一个使用 Rust 作为基础的项目,能够通过用 Rust、Go 和 C++ 编写的共享库来扩展其功能。我要添加的功能不会占用大量内存,但我同样不想使用超出我需要的内存,同时也尝试在实现扩展库的目标的同时减少开发时间.

如果我用 Rust、Go 或 C++ 编写相同的代码并为它们创建共享库,生成的库文件大小是否相同?当核心应用程序导入并使用时,无论源语言是什么,它都会占用相同的内存量吗?

go rust shared-libraries
1个回答
0
投票

如果我用 Rust、Go 或 C++ 编写相同的代码

不太可能,但对于最琐碎的软件来说。

并为他们创建了一个共享库,生成的库文件大小是否相同?当核心应用程序导入并使用时,无论源语言是什么,它都会占用相同的内存量吗?

不。语言的二进制大小、链接和运行时组件会影响共享库占用的空间。

我希望 C++ 版本占用最少的内存,因为我相信标准库通常是动态链接的(至少在 Windows 外部)并且可以在进程之间共享,尽管编码风格也是一个因素(复制 v 分享 v 移动)。

Rust 可能是下一个,因为标准库是静态链接的,并且它同样没有运行时。

Go 几乎肯定是最后一个,因为它也倾向于使用静态链接 并且有一个重量级的运行时并且有一个垃圾收集器,通常需要双倍的实际内存来完成它的工作。

尽管这里的一个混杂因素是 C++ 和 Rust 都有很强的单态倾向(语言和风格),这会增加最终二进制文件的大小。

© www.soinside.com 2019 - 2024. All rights reserved.