工程是一门科学,科学是严谨的。

VS2017 性能优化方法

出处1:https://docs.microsoft.com/zh-cn/visualstudio/ide/optimize-visual-studio-startup-time?view=vs-2017

出处2:https://docs.microsoft.com/zh-cn/visualstudio/ide/visual-studio-performance-tips-and-tricks?view=vs-2017

Visual Studio 性能建议适用于内存不足的情况,这种情况极少出现。 出现这种情况时,可优化某些未使用的 Visual Studio 功能。 以下提示不作为一般性建议。

启动优化

为了避免启动时间延长,Visual Studio 2017 使用按需方法加载扩展。 该行为意味着不会在 Visual Studio 启动后立即打开扩展,而是根据需要打开。 此外,由于在之前的 Visual Studio 会话中保持工具窗口的打开状态会使启动时间变慢,因此 Visual Studio 以更智能的方式打开工具窗口,从而避免影响启动时间。

如果 Visual Studio 检测到启动速度较慢,则会弹出一条消息,提示你导致速度变慢的扩展或工具窗口。 此消息提供了指向“管理 Visual Studio 性能”对话框的链接。 还可以通过在菜单栏中选择“帮助” > “管理 Visual Studio 性能”,访问此对话框。

该对话框会列出影响启动性能的扩展和工具窗口。 可更改扩展和工具窗口的设置以提高启动性能。

更改扩展设置以改善启动、解决方案加载和键入性能

  1. 通过在菜单栏上选择“帮助” > “管理 Visual Studio 性能”,打开“管理 Visual Studio 性能”对话框。

    如果某个扩展使 Visual Studio 的启动、解决方案加载或键入变慢,此扩展将显示在“扩展” > “启动”(或“解决方案加载”或“键入”)下的“管理 Visual Studio 性能”对话框中。

  2. 选择想要禁用的扩展,然后选择“禁用”按钮。

可以始终使用“扩展管理器”或“管理 Visual Studio 性能”对话框重新启用扩展,以用于以后的会话。

更改工具窗口设置以改善启动时间

  1. 通过在菜单栏上选择“帮助” > “管理 Visual Studio 性能”,打开“管理 Visual Studio 性能”对话框。

    如果某个工具窗口使 Visual Studio 启动变慢,此工具窗口将显示在“工具窗口” > “启动”下的“管理 Visual Studio 性能”对话框中。

  2. 选择想要更改其行为的工具窗口。

  3. 选择下列三个选项的其中一个:

    • 使用默认行为: 工具窗口默认行为。 选中此项将不会提升启动性能。

    • 启动时不显示窗口: 打开 Visual Studio 时,指定的工具窗口将始终关闭,即使它在上一个会话中保留打开状态。 需要时可以从相应的菜单中打开工具窗口。

    • 启动时自动隐藏窗口: 如果工具窗口在上一个会话中保留打开状态,则此选项将在启动时折叠工具窗口组,以避免初始化工具窗口。 如果经常使用工具窗口,那么这是一个不错的选择。 因为工具窗口仍然可用,但不会再对 Visual Studio 启动时间产生负面影响。

更新到 Visual Studio 2017 版本 15.6 或更高版本

如果当前使用 Visual Studio 2017,请确保运行版本 15.6 或更高版本。 数据显示,在版本 15.6 中,解决方案的加载速度最高可提升两到三倍。

硬件

如果考虑升级硬件,固态硬盘 (SSD) 对性能的影响比额外的 RAM 或更快的 CPU 更大。

若要添加 SSD,为了获得最佳性能,应将 Windows 安装在 SSD 上,而非硬盘驱动器 (HDD)。 Visual Studio 解决方案的驱动器位置似乎没有那么重要。

此外,不要从 USB 驱动器运行解决方案。 请将其复制到 HDD 或 SSD。

 

使用 64 位操作系统

如果将系统从 Windows 32 位版本升级到 64 位版本,那么 Visual Studio 的可用虚拟内存量会从 2 GB 扩展到 4 GB。 这样,即使 Visual Studio 是 32 位进程,也可以处理更大的工作负荷。

有关详细信息,请参阅内存限制在 64 位 Windows 上使用 /LARGEADDRESSAWARE

禁用自动文件还原

Visual Studio 会自动重新打开上一个会话中处于打开状态的文档。 这可将加载解决方案所需的时间延长 30% 或更多,具体取决于项目类型和打开的文档。 Windows 窗体和 XAML 等设计器以及一些 JavaScript 和 typescript 文件的打开速度较慢。

当自动文档还原导致解决方案加载速度明显变慢时,Visual Studio 会以黄色显示栏通知。 可按照以下步骤禁用自动文件重新打开:

  1. 选择“工具” > “选项”,打开“选项”对话框。

  2. 在“项目和解决方案” > “常规”页面上,取消选中“重新打开解决方案加载文档”。

如果禁止自动还原文件,可使用任一转到命令快速导航到要打开的文件:

  • 对于常规“转到”功能,请选择“编辑” > 转到” > 转到所有”(或按 Ctrl+T)。

  • 在 Visual Studio 2017 版本 15.8 及更高版本中,可使用“编辑” > “转到” > “转到上次编辑位置”(或按 Ctrl+Shift+Backspace)跳转到解决方案中上次编辑的位置。

  • 在 Visual Studio 2017 版本 15.8 及更高版本中,使用“转到最近使用的文件”以查看解决方案中最近访问的文件的列表。 选择“编辑” > “转到” > “转到最近使用的文件”(或按 Ctrl+1、Ctrl +R)。

配置调试选项

如果经常在调试会话期间遇到内存不足的情况,可以通过更改一项或多项配置来优化性能。

  • 启用“仅我的代码”

    最简单的优化是启用“仅我的代码” 功能,启用此功能后只会加载你项目的符号。 启用此功能后,调试托管的应用程序 (.NET) 时可节省大量内存。 对于某些项目类型,此选项默认为启用状态。

    要启用“仅我的代码”,请选择“工具” > “选项” > “调试” > “常规”,然后选择“启用仅我的代码”。

  • 指定要加载的符号

    对于本机调试,加载符号文件 (.pdb) 会占用很多内存资源。 可通过配置调试程序符号设置来节省内存。 通常情况下,将解决方案配置为仅加载你项目中的模块。

    要指定符号加载,请选择“工具” > “选项” > “调试” > “符号”。

    将选项设置为“仅指定模块”,而不是“所有模块”,然后指定要加载的负载。 调试时,还可以在“模块”窗口中右键单击特定模块,将其显示包含在系统加载中。 (要在调试时打开窗口,请选择“调试” > “窗口” > “模块”。)

    有关详细信息,请参阅了解符号文件

  • 禁用诊断工具

    建议在使用 CPU 分析后将其禁用。 此功能可能会占用大量资源。 CPU 分析处于启用状态后,后续调试会话中会一直保持启用状态,因此可在其完成时将其显示关闭。 如果不需要提供的功能,可以通过在调试时禁用诊断工具节省一些资源。

    要禁用“诊断工具”,请启动一个调试会话,选择“工具” > “选项” > “启用诊断工具”,并取消选择该选项。

    有关详细信息,请参阅分析工具

禁用工具和扩展

某些工具或扩展会关闭以提高性能。

 提示

通常可以通过一次关闭一个扩展并重新检查性能来隔离性能问题。

托管的语言服务 (Roslyn)

有关 .NET Compiler Platform(“Roslyn”)性能注意事项的详细信息,请参阅 Performance considerations for large solutions(大型解决方案的性能注意事项)。

  • 禁用完整解决方案分析

    Visual Studio 对整个解决方案执行分析,以在调用生成前提供关于错误的丰富体验。 此功能可用于尽快速识别错误。 但是,对于大型解决方案,这一功能可能会占用大量内存资源。 如果遇到内存不足或类似问题,可以禁用此体验并释放这些资源。 默认情况下,Visual Basic 启用此选项,而 C# 禁用此选项。

    若要禁用“完整解决方案分析”,请选择“工具” > “选项” > “文本编辑器”,替换选择“Visual Basic”或“C#”。 选择“高级”,并取消选中“启用完整解决方案分析”。

  • 禁用 CodeLens

    Visual Studio 对显示的每个方法执行“查找所有引用”任务。 CodeLens 提供内联显示引用数目等功能。 工作在单独的进程(例如 ServiceHub.RoslynCodeAnalysisService32)中执行。 在大型解决方案或资源受限的系统中,此功能对性能有显著影响。 例如,如果在 4 GB 计算机上加载大型解决方案时遇到内存问题,或进程的 CPU 使用率过高,可禁用 CodeLens 以释放资源。

    要禁用 CodeLens,请选择“工具” > “选项” > “文本编辑器” > “所有语言” > “CodeLens”,然后取消选择该功能。

     备注

    CodeLens 在 Visual Studio Professional 和 Enterprise 版本中提供。

其他工具和扩展

  • 禁用扩展

    扩展是添加到 Visual Studio 的附加软件组件,用于提供新功能或扩展现有功能。 扩展通常可能导致内存资源问题。 如果遇到内存资源问题,请尝试一次禁用一个扩展,并查看这将如何影响方案或工作流。

    要禁用扩展,请转到“工具” > “扩展和更新”,然后禁用特定扩展。

  • 禁用 XAML 设计器

    默认情况下,XAML 设计器处于启用状态,但是只会在打开 .xaml 文件时占用资源。 如果使用 XAML 文件,但不希望使用设计器功能,请禁用此功能以释放内存。

    要禁用 XAML 设计器,请转到“工具” > “选项” > “XAML 设计器” > “启用 XAML 设计器”,然后取消选择该选项。

  • 删除工作负载

    可以使用 Visual Studio 安装程序删除不再使用的工作负载。 此操作可以跳过不再使用的包和程序集,从而优化启动和运行时的资源占用。

强制垃圾回收

CLR 使用垃圾回收内存管理系统。 在此系统中,内存有时会被不再需要的对象占用。 这一状态是临时的,垃圾回收器会基于其性能和资源使用情况试探法释放此内存。 可通过在 Visual Studio 中使用热键强制 CLR 回收任何未使用的内存。 如果有大量垃圾等待回收并已强制垃圾回收,可在“任务管理器”中看到 devenv.exe 进程的内存使用率降低。 很少需要使用此方法。 但是,在完成一个资源占用较高的操作(如完整生成、调试会话或解决方案打开事件)后,此方法有助于确定进程实际在使用的内存量。 由于 Visual Studio 属于混合型(托管和本机),因此本机分配器和垃圾回收器有时可能会竞争有限的内存资源。 在内存使用率较高的情况下,这可能有助于强制垃圾回收器运行。

要强制垃圾回收,请使用热键:Ctrl+Alt+Shift+F12,Ctrl+Alt+Shift+F12(按两次)。

如果强制垃圾回收确实可让方案正常工作,请通过 Visual Studio 反馈工具提交报告,因为这一行为可能是一个 Bug。

有关 CLR 垃圾回收器的详细描述,请参阅垃圾回收的基本原理

posted @ 2019-02-18 10:30  大圣的笑  阅读(11826)  评论(0编辑  收藏  举报