我最近购买了一台 Surface Pro 3(Win 8.1、Core i7、256GB 三星 SSD),主要用于 .NET 开发,但对其性能感到失望。
举例来说,使用命令行中的 msbuild 对中型项目进行完整重建所花的时间大约是使用三年的联想 X220T(Win7、Core i5、128GB SSD、ESET NOD 32 Antivirus)的三倍;约 3 分 30 秒 vs 约 1 分 10 秒。
在构建时,我看不到任何 CPU 或磁盘饱和的迹象。我尝试过暂时禁用 Windows Defender,但没有任何效果。我应用了 Windows Update 中的所有更新,包括 2015 年 1 月的最新固件更新,但这也没有什么实际效果。我尝试过使用 Windows 内置工具优化驱动器。但也没有成功。
我现在能想到的唯一可能存在问题的是 BitLocker,但我找不到任何真正的证据表明任何人通过禁用 BitLocker 获得了任何重大的性能提升。我也不太愿意尝试。
关于如何继续进行此操作,有什么提示吗?
答案1
我相信我已经找到罪魁祸首了。
不同示例中的 CPU 在功能上实际上并没有太大差别:
Windows 报告如下(分别):
- “英特尔(R) 酷睿(TM) i5-2520M CPU @ 2.50GHz 2.50GHz”
- “Inter(R) Core(TM) i7-4650U CPU @ 1.70GHz 2.30GHz”
仅从 CPU 速度来看,编译速度可能会有所不同(暂时不考虑缓存大小、指令集等)。但是我在构建过程中运行了性能监视器并检查了 CPU 使用率和频率:
在构建时,联想的 CPU 频率略有不同,但平均约为 2.3GHz,而 Surface Pro 3 则固定在 759MHz。将这两个数字相除,结果接近 3 - 这是我最初观察到的结果。
我认为可以通过电源选项强制 CPU 使用更高的频率,但 Surface Pro 3 中似乎缺少 CPU 频率范围设置。例如,没有“高性能”计划,甚至自定义计划下的高级设置也忽略了与 CPU 相关的内容。(是的,我正在测量插入的所有设备)。我将针对此特定项目发布一个单独的问题。
当然,这可能最终与 CPU 无关,但我现在会坚持这条路。
更新:
关闭即时围棋似乎成功了!仍然无法使用电源选项明确配置 CPU 速度限制,但现在运行 MSBuild 时 CPU 运行速度为 2.3GHz。
这实际上会导致少量(10-15%)减少Surface Pro 的构建时间与 X220T 相比有所差异。也许更大的 L3 缓存或 SSD 在这方面有所帮助。
笔记:为了禁用即时围棋我启用了Hyper-V在 Surface 上。据我所知,似乎没有任何明确的方法可以禁用此功能。
笔记2:禁用即时围棋并非没有代价 - IIUC 这意味着恢复速度更慢,待机时无活动,功耗更高。更少的 Surface,更多的是普通 PC。您需要自己决定您的优先事项是什么。
更新 2:
好吧,这可能是蠢人做蠢事。让我稍微完善一下我的发现。我从一开始就没有提到的一个重要细节是,我使用远程桌面。我现在认为的是:
- 当我进行最初的测试时,Surface 已经即刻出发模式。屏幕一片空白。
- 在该模式下,无论负载是多少,CPU 似乎都会“锁定”在 759MHz。
- Surface Pro 上的 Windows 8.1 无法识别通过以下方式连接的活跃用户:远程桌面协议,并将系统置于即时围棋当屏幕因计时器或用户(我)按下电源按钮而变黑时,进入模式。
因此,在运行“基准”构建时,除了确保 Surface 显示屏处于打开状态外,实际上不执行任何其他操作,我获得的构建速度甚至比在机器上启用 Hyper-V 时看到的 10-15% 的提升还要快 - 大约再快 5-10%。这可能是因为 CPU 现在使用涡轮增压偶尔在构建期间。
话虽如此,Hyper-V似乎将 CPU “锁定” 为 2.3GHz,与 Surface 的显示屏是否打开无关。考虑到设备从未达到即时围棋在此配置中。