WIN和LIN有啥区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WIN和LIN有啥区别?相关的知识,希望对你有一定的参考价值。
微软的Windows是一个商业化的操作系统,由于操作简单,界面友好,在PC机上的装机量上有绝对的优势。但是所谓树大招风,很多病毒就是针对Windows设计的。另外它的源代码是归微软所有,所以维护就由微软一家公司来完成。
而linux是一个自由软件,你可以在互连网上下载,可以拿好友的安装盘直接拷贝这都是允许的。另外它的源代码是公开的,任何人都可以下载,修改,发布它。(当然要在GNU公约下)。linux从开始就模仿大型机的操作系统UNIX,使得他们之间的很多软件和命令都是相同的。UNIX是一个稳定的,高效的操作系统,linux也继承了这一优点(当然linux的内核是另外编写的)。linux是有世界各地的爱好者共同开发维护,当发现了linux的
漏洞很快就有人开发出相应的程序。但是目前linux的操作还是不如Windows简便。
不过有全世界的linux爱好者的参与,她会应用的更加广泛。 参考技术A 内核不同,使用的分区不同,操作方法不同,安全性不同,开发公司不同,软件售价不同,技术支持不同,应用软件多少不同.....
要详细了解可以到http://www.chinaitpower.com/2005September/2005-09-13/199834.html 来查看
部署时 Portable 和 win-x64 有啥区别?
【中文标题】部署时 Portable 和 win-x64 有啥区别?【英文标题】:What are differences between Portable and win-x64 when deploying?部署时 Portable 和 win-x64 有什么区别? 【发布时间】:2019-05-20 11:59:35 【问题描述】:我将我的代码部署到 Windows Server 2016 上的 IIS,我试图了解在 Publish/Settings/Target Runtime 下拉列表中选择 Portable
与 win-x64
之间的有效区别。
是否会因为 JIT 需要将代码编译到特定架构而在 Portable 下启动站点需要更长的时间?还有别的事吗?
【问题讨论】:
【参考方案1】:已接受的答案在 Visual Studio 2022 中不再适用。
明显的区别是一个是可移植的,而另一个是针对特定架构的。
不那么明显的区别是,当您选择 win-x64 时,您可以选择“启用 ReadyToRun 编译”。
但是,ReadyToRun 并不总是意味着更快。有关详细信息,请参阅文档 here。
In a nutshell, when ReadyToRun is selected, the compiler attempts to compile it as best as it can, but it doesn't have the specifics of the actual machine it will run on.因此,文件大小要大得多,多达 2-3 倍。文档中的建议是将其用于大型项目,而不是用于小型项目,但您必须自己决定大小的定义。
我的建议是,如果您事先知道会是什么,就选择具体的架构。至于ReadyToRun,如果测试表明它对启动时间很重要,请选择它。
【讨论】:
【参考方案2】:编辑 - 简短回答
如果您选择portable
,则应用程序每次启动时都需要对实际执行的应用程序部分进行 JIT 编译。如果您的应用程序很大,性能可能会受到影响。
如果您选择x64
,应用程序的编译速度不会减慢,因为构建机器(您的笔记本电脑)上的发布过程已经完成了。
原答案
当您选择 Portable
发布选项时,您将获得一个能够在 x86(32 位)机器和 x64(64 位)机器上运行的包。选择可移植选项后,在应用程序启动时,您将在应用程序保持运行时获得目标机器(x64 或 x86)的 JIT 编译代码。但是,如果应用程序关闭,所有 JIT 编译的代码都将丢失。编译后的代码会一直保存在内存中,直到应用程序进程结束。下一次运行必须在使用时再次 JIT 编译应用程序。这样做的好处是您只需要分发一个包,它就可以在两台 x86/x64 机器上运行。
另一种方法是生成多个包,一个用于您打算在其上分发应用程序的每个目标平台。在这种情况下,您将获得已编译的特定于机器的包,即使在应用程序进程结束并稍后重新启动后也不需要重新编译。在这种情况下,您的应用程序将看起来运行得更快,因为编译只在构建服务器/机器上完成一次。但是,它确实会影响您的部署风格。
更多关于 .NET 运行时标识符的信息可以在这里找到:https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
关于 JIT 编译代码的好文档在这里:https://www.telerik.com/blogs/understanding-net-just-in-time-compilation
【讨论】:
我对此表示怀疑。即使你使用win-x64
,JIT 编译仍然应该是执行的一部分。 .NET Native 还不适用于 .NET Core,所以没有 AOT 可以替代 JIT。
现在添加了一个复选框选项“启用 ReadyToRun 编译”,似乎更多的是关于这个回复的内容。而这个仅适用于特定于平台的目标。如果不选中它,我不确定目标有什么不同。以上是关于WIN和LIN有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章