我注意到我的路径变量在%SystemRoot%
和C:\Windows
表单中都包含对 Windows 目录的引用。
例如,路径变量中存在 a%SystemRoot%\system32
和 a 。C:\Windows\system32
- 删除其中一种形式是否安全?如果可以,删除哪一种形式比较好?
- 这样做能获得任何性能提升吗(无论多么微小)?
答案1
- 删除硬编码的那个并保留 %SystemRoot% 将在窗口被移动到其他驱动器/文件夹(这种情况很少见且几乎无法想象)的情况下保护您。我不知道为什么有人会想这样做,但这是可能的,并且 %SystemRoot% 始终会在正确的位置运行。
删除 %SystemRoot% 并保留硬编码的变量可能会更快,因为 Windows 在检查路径时不必将 %SystemRoot% 环境变量解码为其真实值。但如果 Windows 很“聪明”,它可能只会解码一次并以解码后的格式将其存储在内存中。
- 性能提升应该不明显,但理论上,只要将它放在那里一次,它就无需在同一个文件夹中搜索两次以查找可执行文件。但实际上,我们谈论的是毫秒。
2B) 您或许可以对不存在的命令进行定时检查 - 敲击键盘 - 并计算提示返回所需的时间。然后修复路径,使只有一个命令存在,然后再次运行测试。然后修复路径,使只有一个命令存在 - 另一个命令 - 然后再次运行该测试。这就是您的性能增益/损失。
如果您测试过这一点,我肯定会对您的发现感兴趣。使用 %SystemRoot%、硬编码或两者结合进行路径搜索的具体时间。
但无论如何,你都无法察觉到它。理论上,如果你运行了大量快速命令,比如运行数千个相对即时的小实用程序的脚本……那么额外的搜索时间可能加起来会达到一到三秒 :)