Python 哪种语言作为docker容器部署在硬件上时占用的资源较少?

Python 哪种语言作为docker容器部署在硬件上时占用的资源较少?,python,performance,docker,resources,hardware,Python,Performance,Docker,Resources,Hardware,我搜索了好几天关于这个主题的信息,但是在互联网上没有太多关于我的这个特殊用例的信息 我的目标是编写我希望稍后在特定硬件上部署为docker容器的程序或模块。确切地说,我编写了我的程序,然后将其构建为docker映像,最后将其部署到硬件上并运行 这里很有趣的一点是,知道哪种语言占用的硬件资源更少(我猜是C?)。硬件(在我的例子中)不是很强大,因此我需要节约,并尽量节省资源,以便我的程序运行平稳,不占用太多资源 我一直使用C#工作到现在,因此,如果我希望我的C#代码能够在硬件上运行,我必须在硬件上安

我搜索了好几天关于这个主题的信息,但是在互联网上没有太多关于我的这个特殊用例的信息

我的目标是编写我希望稍后在特定硬件上部署为docker容器的程序或模块。确切地说,我编写了我的程序,然后将其构建为docker映像,最后将其部署到硬件上并运行

这里很有趣的一点是,知道哪种语言占用的硬件资源更少(我猜是C?)。硬件(在我的例子中)不是很强大,因此我需要节约,并尽量节省资源,以便我的程序运行平稳,不占用太多资源

我一直使用C#工作到现在,因此,如果我希望我的C#代码能够在硬件上运行,我必须在硬件上安装C#或dotnet运行时,对吗?然而,我注意到C#是个坏主意,因为它消耗了大量资源(RAM等)(可能是因为dotnet运行时?)。我还注意到,我的C语言程序的大小比C++编写的其他程序要大。 显然,这里的选择是降低,切换到C++,但是我希望在开发中快速,我不擅长C/C++。因此我想到了使用Python。现在我不知道这是比C#更糟糕还是更好。那么python最终会比C#占用更多的资源吗

我假设我必须在硬件上的docker容器中部署python解释器,以便在硬件上运行python脚本,对吗?那么python解释器比dotnet运行时占用的资源少吗?换句话说,哪一个更轻

我知道C/C++的执行速度比大多数语言都快,但是如果作为docker容器部署,它们占用的资源是否也比其他语言少?如果是,在这个特定的用例中,是否有其他的C/C++替代方案


PS:请注意,我这里不是在谈论执行速度,我知道解释语言通常比较慢,但这不是我的目标。我想知道哪些语言对我的用例更有用。如果你们能从自己的经历中给我举个例子,那会很有帮助。

这里有两条经验法则:

  • 编译语言几乎总是比解释语言更快、更轻
  • 具有相关库堆栈或运行时系统的语言将比没有库堆栈或运行时系统的语言更重
因此,运行时最少的编译语言(C、Go、Rust)最终将是最小的。C++有点重,但也应该与这些标准相称。如果C#需要整个.Net运行时来运行,那么实际上这将是更重的负担。我对基于JVM的语言(Java、Scala)有更多的经验,JVM仍然是一个相当大的组件,尽管它的运行时性能相当好。作为一种解释语言,Python可能会比上述任何一种都慢得多,而且它需要更多的资源来完成基本的工作,但是核心Python解释器和库可能最终在物理上比.Net运行时小

看看具体的Docker图像,是51.85MB,这是相当小的。我不容易找到微软发布的.NET核心映像的大小,但是在中引用的tar文件被压缩了大约30 MB;如果这是图像大小的精确表示,那么它与Python图像相当(而且相当小)

另一个Docker特有的注意事项是,您应该利用它来防止编译器和其他构建工具进入最终映像。实现这一点的确切机制是非常特定于语言的;在C/C++/Go/Rust的世界中,通常会有一个“普通”Dockerfile来构建应用程序,然后是第二个阶段,即
COPY--from=build
只复制已编译的二进制文件,而不是工具链