ruby - 比较 2 个库的“大小”
问题描述
如果我想比较 2 个库的大小,比如 Sinatra 与 Rails,那么最准确的方法是什么?
我正在考虑创建以下 2 个 docker 图像并比较它们的大小,但不确定我是否需要比较图像、容器或两者都不比较(无论出于何种原因):A - {Base Stuff} + Ruby + Sinatra B - {基础材料} + Ruby + Rails
这是一个好方法还是我想做一些不同的事情?
解决方案
有几种方法可以在技术上比较库大小,但真正的问题是从这些比较中你能得到什么。
在你能想到的几乎所有指标上,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 进行比较,那么遏制的代码行可能会更少。
推荐阅读
- javascript - 使用“window.open”打开的窗口关闭后如何运行代码?
- nativescript - 如何从 TypeScript 中的资源中获取 NativeScript 图像?
- selenium-webdriver - Groovy 在 xpath 中使用单引号传递字符串值 - Katalon
- c - 如果孩子在父母调用 wait() 之前就退出了怎么办?
- c# - 网格视图内的文本框及其值未反映在服务器端
- string - 输出此字符串序列的第 n 遍
- gams-math - 使用带有表数据的“循环”或“for”来提取每一行数据,并将提取的数据用于 gams 中的两个参数
- php - 获取日期间隔内的重复日期
- javascript - 如何使用momentjs获取3个字母的时区?
- jenkins - 在管道 SH 脚本中使用 Jenkins 环境变量