首页 > 解决方案 > 比较 2 个库的“大小”

问题描述

如果我想比较 2 个库的大小,比如 Sinatra 与 Rails,那么最准确的方法是什么?

我正在考虑创建以下 2 个 docker 图像并比较它们的大小,但不确定我是否需要比较图像、容器或两者都不比较(无论出于何种原因):A - {Base Stuff} + Ruby + Sinatra B - {基础材料} + Ruby + Rails

这是一个好方法还是我想做一些不同的事情?

标签: rubyimagedockercontainers

解决方案


有几种方法可以在技术上比较库大小,但真正的问题是从这些比较中你能得到什么。

在你能想到的几乎所有指标上,Sinatra 都比 Rails“小”:

  • 代码行
  • 代码的内存使用情况
  • 如果您使用该库,您的应用程序的内存使用情况
  • 依赖项数
  • 库 + 依赖项中的代码行
  • 库 + 依赖项的内存使用情况

Sinatra 做的事情也比 Rails 少很多(我认为可以准确地说 Sinatra 所做的一切,Rails 在某些方面也是如此)。

但是由于轴的数量,这种比较不容易推广到任意库。考虑作为库 C 的薄包装器的库 A 和库 B:

  • 库 A 的代码行数少于库 B
  • 库 A + 依赖项的代码行数比库 B 多

当您使用 A 或 B 时,它们都会利用它们的依赖关系,那么哪个“更小”?

或者,将像 net/http 这样的纯 Ruby 库与像由 C 扩展或 C 库支持的像遏制这样的库进行比较。纯 Ruby 库的代码行数可能更少,但内存占用更大,性能更低。C 库可能有更多的代码行、更高的性能和更小的内存占用。但是,如果您将没有 curl 的遏制(支持 C 库)与 net/http 进行比较,那么遏制的代码行可能会更少。


推荐阅读