“轻量级”这个词是否有技术定义,或者至少有一些基准概念?
难道只是一些任意的“不消耗大量计算机资源”?
或者也许“应用程序不会分叉新进程”(单个进程或仅线程)?
如果没有技术定义,我会接受给出最佳经验规则的答案,无论什么东西是轻量级的或不是轻量级的。
答案1
我认为一个好的定义可能是“如果我尝试在旧机器上使用它,它会无缝运行”。
即使,比如说,Pentium II 机器现在可能已经太旧了,以至于有些人会说“但这太旧了”,而不是关注轻量级,事情是:有窗口管理器(也许还有简单的 DE,比如之前的 XFCE)开始变得更加臃肿)这将在所述机器上运行良好。它们很轻。
Firefox,OTOH,存在内存泄漏,需要数百兆字节才能维护多个打开的选项卡。在 Firefox 2 推出之前,它就不再是轻量级的了。
您的“不消耗大量计算机资源”也是另一个可能的基准,对于这个旧机器基准,内存通常是最大的问题:像 LibreOffice 这样的程序,即使它们不慢,也需要更多的内存,例如,普通的 UNIX 文本编辑器(我指的是Emacs
、vi
或nano
蝴蝶之类的东西)。
即便如此,CPU 使用率或磁盘访问也可能是另一个需要考虑的事情。我不喜欢新的 GTK 文件选择器,不仅因为他们的用户界面重新设计,但也因为,当我使用一台旧机器时,我还注意到他们所做的更改之一是引入了您根本无法关闭的文件嗅探。每次某些 GTK+ 应用程序打开文件选择器时,这都会导致长时间的延迟,尤其是在包含多个文件的目录中。执行 ls 或使用 QT 文件选择器会快速而简单。 Firefox 也有自己的文件选择器。但是,比如说,带有 GTK+ 文件选择器的 Firefox 会提示输入二进制文件来打开 /usr/bin,这将需要几秒钟的时间来处理。从那时起,我想我们可以说 GTK+ 文件选择器不是轻量级的。一个轻量级的工具包也许可以让你关闭这种嗅探,因为它可能很密集。
“应用程序不会分叉新进程”,“(单个进程或仅线程)”:我不知道多少,但进程可能比线程慢,是的。考虑线程/多个进程(即使后者比前者慢)是一个好主意 - 除非我们正在谈论一个分叉的程序很多(比如说,好的老式bash
叉子炸弹),它们不会使用那么多资源,但可以提高响应能力。甚至可能发生的一件事是,如果一个程序具有响应能力,则认为该程序是轻量级的,如果该程序在后台阻塞几秒钟,那么该程序就不是轻量级的,避免这种情况的一种方法是单独使用线程,一个处理 UI,另一个在幕后处理这些事情。
轻量级也可以是“只具有所需的功能”。例如,由于我不太喜欢使用鼠标或 GUI,所以我更喜欢可以通过文件启动并仅使用键盘快捷键显示文件的媒体播放器,而不是具有大量按钮和控件的 GUI 播放器。鼠标。我可以说mplayer
与它的 GUI 版本相比是轻量级的(或者说,vlc
虽然我认为有cvlc
)。最后,即使这不需要那么多内存或CPU资源,如果你将其视为“节省屏幕空间”,它仍然可以被认为是“轻量级”。
与桌面环境相比,许多窗口管理器可以说是轻量级的,因为 DE 提供了多种应用程序和工具来执行各种操作,而 WM 只是管理窗口(事实上,DE 确实将 WM 作为其组件之一)。
与某些提供一堆菜单来执行相同操作的 GUI 应用程序相比,执行某些任务的小型命令行工具也是轻量级的,尤其是当您必须在菜单和选项中漫游以执行可以使用一个命令快速完成的操作时。 (虽然在这里我可能有偏见,就像我的旧机器一样,这些 GUI 工具通常会更慢,只是因为 GUI 的原因。)
答案2
“轻量级”没有任何技术定义,也没有任何关于消耗资源或在旧计算机上运行情况的暗示,也没有任何意义上的绝对性、技术性或经验法则。
但这并不意味着它有非常明确、具体的含义:
轻量化意味着比您可能考虑使用的其他东西更轻。
因此,记事本是一种轻量级文本编辑器,因为它比 Word 更轻。 JSON 是一种轻量级数据格式,因为它比 XML 更轻。上网本是一种轻型 PC,因为它比 PC 更轻。
答案3
“线程是一个轻量级进程”——即没有那么多的开销。
这是我的信息科学教授使用过的这个词的唯一用法。
因此,更一般地说,如果某物的资源消耗低于“正常”,则可以将其视为“轻量级”。克汗与他的回答走向相同的方向。
答案4
“轻量级”只有在与其他事物进行比较时才有意义。线程比进程轻。 Xfce 比 Gnome 更轻。 Puppy Linux 比 Ubuntu 更轻。
但对于什么才算“轻量级”,并没有硬性规定。一般来说,轻量级的东西消耗的东西较少,但“东西”可以是很多东西——可以是CPU资源、内存、磁盘空间等。