我在Linux上工作,在Windows 7上工作。
我对NetBeans,Eclipse,pgAdmin和其他程序的打开速度感到惊讶,实际上,在Linux上比在Windows上快很多。
Linux和Windows内核之间导致时间负载差异的主要区别是什么?
两台机器的硬件配置完全相同。
我在Linux上工作,在Windows 7上工作。
我对NetBeans,Eclipse,pgAdmin和其他程序的打开速度感到惊讶,实际上,在Linux上比在Windows上快很多。
Linux和Windows内核之间导致时间负载差异的主要区别是什么?
两台机器的硬件配置完全相同。
Answers:
这只是我的猜测,但是我认为当您在一家公司工作时,一旦一切都被编译(转换为二进制数据,可以由计算机执行),再也没有人能看到源代码了,您往往会变得懒惰,因为它并不重要,只要它的作品。
Linux是开源的,因此每个愿意的人都可以看到源代码。如果您很懒惰,并且编写了一段很糟糕的代码,这会真正减慢系统速度或诸如此类,那么您的声誉就会如您所见。开发人员和用户都一样。我认为这就是开放源代码开发人员倾向于不那么懒惰的原因之一。
还有一个事实是,Windows内核的核心从来没有为了成为今天的样子而编写(Linux也不是,但是他们尽了最大努力来优化旧的东西),并且开发人员一直在不断地增加和增加。最重要的是,直到代码变得如此神秘,以至于没人能再用它做点什么了。凌乱代码的两个属性是,通常有很多冗余,而且您再也看不到两段代码之间的链接了,这使得您甚至无法尝试对其进行优化。只是一个例子(不是一个神秘的例子);
for (int i = 0; i < 20; i++)
{
if (x == y)
{
if (z <= u)
{
goto banana;
}
}
}
上面的示例可以更有效地完成;
for (int i = 0; (i < 20) && (x == y) && (z <= u); i++)
{
banana ();
}
另一个尚未提及的大问题是Linux具有更好的文件系统。NTFS处理小文件的性能不是很好-ext3更好,而ext4则好得多。关于为什么在另一个问题上有一些有趣的推测。
当您打开一个程序时,大量的启动时间正在从磁盘加载一堆小文件,因此拥有一个能够快速执行此操作的文件系统非常重要。
这只是我的观点,但我认为GNU / Linux系统比Windows更快的原因有很多,并且并非全部与内核有关:
我相信单靠内核是无法解决的。Windows 7是Windows第一次具有足够的响应能力,我认为它可以接受。
我相信更多的速度差异与@RobinJ的软件工程思想有关。Windows中的所有内容*都是通过某种Microsoft框架或其他框架在MSDN上构建的。这实际上与大企业对微软的热爱有关。Microsoft致力于帮助不同的程序/套件/技术相互交流。
下一步...使开发人员更轻松地涵盖要点(而不是重新发明轮子)Microsoft允许制造商捆绑和/或要求预编译的库,例如Microsoft Visual C ++ 2008 Redistributable。或.Net4.0,MSSQL 2005,广告素材。开发人员可以使用和构建价值约十年的软件包,并且要求最终用户在Windows计算机上安装才能使用新软件。
因此,为了加载程序Zyzzyx并运行,必须存在并运行一个或多个MSDN可再发行库。这些库确定程序如何与OS交互。
归根结底,我认为Window在数十年软件中的有意兼容性使其膨胀,并且有时比同类linux系统慢。还要注意,我已经为Windows开发了可视软件,但没有为Linux开发任何可视软件……不是GTK,Qt,Py等任何东西,因此我对linux的膨胀程度的假设只是这样。
编辑添加:此外,FOSS软件的确确实有人一直在对其进行改进,因此GTK将随着时间的推移而改进,而不是GTK-2005和GTK-2008处于同一台计算机上,而Microsoft一直在这样做。
* -好的,我敢肯定。