对于32位的Visual Studio Code,64位的可量化优势是什么?

时间:2017-08-21 01:16:37

标签: performance visual-studio 64-bit visual-studio-code

我不是硬件人员,但我知道64位版本问题中的Visual Studio被微软拒绝,声称64位版本的性能不佳。

我觉得很明显的两个显着差异是代码库。一个人开始在1997年的生活,人们会认为这意味着Visual Studio方面的更多包袱,拥有非常现代的应用程序架构和代码的机会更少,这可能会使其变得更难,并且可能构建的东西可以在32上执行有点因某种原因不适合64位?我不知道。

另一方面,Visual Studio Code是一个现代的Electron应用程序,这意味着它几乎只是编译HTML。 CSS和JavaScript。我打赌制作一个版本的Visual Studio Code几乎没有障碍,虽然性能可能不是真正引人注目的,为什么不呢?

P.S。

我仍然想了解哪些方面可以改进性能,以及这种改进对于开发人员来说是否可以忽略不计。您可能知道的任何其他信息或有趣的事实我都希望获得尽可能多的信息,我会用我发现的任何未提及的事实来更新问题。

3 个答案:

答案 0 :(得分:14)

64位Visual Studio代码的存在主要是基于Node.js - 和ChromiumElectron运行时支持32和64这一事实的副作用位结构,而不是应用程序的主要设计目标。微软开发了VS Code with Electron,这是一个用于使用网络技术构建桌面应用程序的框架。

由于Electron已经包含了两种体系结构(以及不同操作系统)的运行时,因此VS Code可以为这两种版本提供额外的工作量--Electron从JavaScript代码中抽象出机器之间的差异。

相比之下,Microsoft将大部分Visual Studio作为包含机器特定指令的已编译二进制文件进行分发,并且重写和维护64位源代码的成本在历史上超过了任何好处。一般来说,如果64位程序永远不会超过32位系统的限制,那么它对于最终用户而言要比32位程序快得多。 Visual Studio的IDE外壳并没有那么繁重 - 典型工作流程中的大部分昂贵处理都是由通常支持64位系统的集成工具链(编译器等)执行的。 / p>

考虑到这一点,我们在运行64位版本的VS代码时可能会注意到的任何好处与我们在使用64位Web浏览器时看到的相似。最重要的是,64位版本可以处理超过4 GB的内存,如果我们需要同时打开很多文件或非常大的文件,这可能很重要,或者如果我们使用许多扩展名。对我们这些开发人员来说最重要 - 编辑在被滥用时不会耗尽内存。

虽然这听起来像是值得签名的保险政策,但即使我们从未达到内存限制,请记住64位应用程序通常比32位应用程序消耗更多内存。如果我们希望更小的内存占用,我们可能想要选择32位版本。大多数开发人员可能永远不会达到4 GB的墙。

在极少数情况下,如果我们使用包装本机代码的扩展(如为特定体系结构构建的DLL),我们可能需要选择32位或64位版本。

我们使用64位版本的VSCode所遇到的任何其他后果(正面或负面)取决于Electron的底层运行时组件及其运行的操作系统的版本。随着发展的进展,这些特征不断变化。由于这个原因,很难以一般方式说明32位或64位版本优于另一种版本。

例如,V8 JavaScript引擎历史上禁用了今天启用的64位系统上的一些优化。某些优化仅在操作系统为其提供设施时才可用。

Windows上的未来64位版本可以利用address space layout randomization来提高安全性(地址空间中的更多位会增加熵)。

对于大多数用户来说,这些细微差别并不重要。选择与系统架构匹配的版本,并仅在遇到问题时保留切换。对编辑器的更新将继续为其底层组件带来优化。如果资源使用是一个大问题,您可能不希望首先使用GUI编辑器。

答案 1 :(得分:2)

我在Windows上工作不多,但与x86,x64和ARM(32位和64位指令集大小)处理器进行了交互。根据我的经验,在以64位格式编写代码之前,我们想:我们真的需要64位大小的指令吗?如果我们的操作可以在32位内执行,那么为什么还需要另外32位?

可以这样想:你有一个64位地址处理器和64位数据总线和64位大小的寄存器。几乎所有程序指令都需要最多32位。你会怎么做?好吧,我认为现在有两种方式:

  1. 创建程序的64位版本并在64位处理器上运行所有32位指令。 (在每个指令周期中浪费32位或处理器,并向程序计数器填充前面4字节的地址)。您的应用程序/程序本可以在256 MB RAM中执行,现在需要512 MB,因此RAM上运行的其他程序或进程将受到影响。

  2. 将程序格式保持为32位,并将2个32位指令组合到64位处理器中执行。

  3. 显然,第二种方法在相同资源下运行得更快。

    但是,是的,如果你的程序包含更多的64位大小的指令;例如。处理4K视频(使用64位指令集的64位处理器更好)或执行浮点运算,最高可达15位十进制数等。然后,最好创建64位程序文件。

    简而言之:尝试编写紧凑型软件并尽可能地利用硬件。

    到目前为止,我读过HereHereHere;我开始知道VS的大多数组件只需要32位指令。

    希望它能解释。

    由于

答案 2 :(得分:1)

4 年后,也就是 2021 年,您现在拥有:

Microsoft's Visual Studio 2022 is moving to 64-bit”来自Mary Jo Foley

它引用了来自开发部产品 CVP Visual Studio 2022 的官方出版物“Amanda Silver

<块引用>

Visual Studio 2022 是 64 位

Visual Studio 2022 将是一个 64 位应用程序,在主 devenv.exe 进程中不再限于 ~4gb 的内存。借助 Windows 上的 64 位 Visual Studio,您甚至可以打开、编辑、运行和调试最大和最复杂的解决方案,而不会耗尽内存。

虽然 Visual Studio 将采用 64 位,但这不会改变您使用 Visual Studio 构建的应用程序的类型或位数。 Visual Studio 将继续成为构建 32 位应用的绝佳工具。

https://devblogs.microsoft.com/visualstudio/wp-content/uploads/sites/4/2021/04/ezgif-6-fe5bba5020a8.gif

我发现观看 Visual Studio 扩展以使用 64 位进程可用的额外内存的视频真的很令人满意,因为它打开了一个包含 1,600 个项目和约 300k 文件的解决方案。
这是为了不再出现内存不足异常。 ?