我是Cygwin的长期用户。我正在运行Win7 / x64,但我的Cygwin安装是32位。在我安装它的时候,64位版本被认为是实验性的。现在,Cygwin网站在他们的网站上列出了32位和64位版本,没有任何特别的提及或推荐使用。
作为程序员,我的经验是:除非专为64位CPU的功能而设计,否则很少有应用程序可以通过重新编译64位CPU来获得任何收益。但是,它们可能会使用更多内存,因为每个内存指针现在使用8个字节而不是4个字节。
所以,我的问题是:选择64位Cygwin而不是32位Cygwin有什么好处吗?我应该迟早升级我的32位安装吗?
常见使用模式的性能/内存基准测试结果(例如,运行常见的UNIX命令,特定的shell脚本等)将非常受欢迎。
如果您已将32位Cygwin升级到64位,请告诉您的故事 - 升级是否?值得吗?
答案 0 :(得分:4)
在运行32位Cygwin多年后,我最近升级到了64位。这是非常轻松的,因为你可以并排运行这两个装置。对我来说,虽然我没有运行任何基准测试,但性能没有明显差异。对我来说,升级的最大收获是从一个新的安装开始,没有任何在过去几年中形成的任何残余。
运行32位Cygwin时的一个缺点是WoW64 subsystem文件系统重定向器静默重定向32位应用程序。这导致在32位Cygwin中运行ls /cygdrive/c/Windows/System32/
实际上不显示%WINDIR%\System32
的内容,而是显示%WINDIR%\SysWOW64
的内容。尝试访问%WINDIR%\System32
目录中的文件,例如ls /cygdrive/c/Windows/System32/nbtstat.exe
失败,并显示错误消息:
ls: cannot access /cygdrive/c/Windows/System32/nbtstat.exe: No such file or directory
这意味着%WINDIR%\System32
中安装的Windows命令(如nbtstat
和dnscmd
)无法修改PATH
。访问64位Windows文件的解决方法是必须使用%SystemRoot%\sysnative
伪目录,例如,运行nbtstat
命令,使用/cygdrive/c/Windows/Sysnative/nbtstat
。
WoW64(Windows 64位Windows 32位)是一个能够运行32位应用程序的子系统。它包含在所有64位版本的Windows中,并创建一个32位环境,以便在64位系统上使用DLL运行未修改的32位应用程序,以提供必要的接口。
Windows将
%SystemRoot%\system32
目录用于其64位库和可执行文件。这是出于向后兼容性原因而完成的,因为许多遗留应用程序都是硬编码以使用该路径。执行32位应用程序时,WoW64透明地将32位DLL重定向到SystemRoot%\SysWoW64
,其中包含32位库和可执行文件。32位应用程序通常不知道它们是在64位操作系统上运行。 32位应用程序可以通过伪目录
%SystemRoot%\System32
访问%SystemRoot%\sysnative
。
对于64位应用程序(例如Windows命令提示符,cmd.exe),没有文件系统重定向:
答案 1 :(得分:0)
我运行了一个I / O基准测试,但即使如此,明显的性能提升还是值得的。
在Windows 7上的cygwin bash外壳上,我发现了许多通过管道传输到grep,然后重定向到32和64位同一硬盘上的文件的模式:
32位
真实1m58.567s 长68%
用户0m11.951s 长41%
sys 0m40.833s 长23%
64位
真实1m10.361s
用户0m8.499s
sys 0m33.051s