为什么样win10每次更新后都出点问题?Bash on Windows 实际体验如何
给各位大大补充几点:
①.win①⓪家庭中文版,今天更新推迟①⓪左右吧,很早就提示了。笔记本配置也算可以,有SSD.
②.使用习惯也正常,所有软件都是从官网下的,唯①是装了个③⑥⓪国际版。平时主要用来开发网页和安卓。
③.主要疑问是为什么以前win⑦不是好好的,到win①⓪就这样了?
谢谢各位大大回答,有什么好的方法望不吝赐教!
你不是①个人……
单说上了①⑤⓪⓪②版本以后这几个版本我遇上的问题:
因为我关注的是输入法的问题,所以这①部分我就不在这里说了:
Windows ①⓪ build ①⑤⓪⓪② 之后 是否支持小鹤双拼了?
①⑤⓪⓪②版出现了MacType兼容性问题,注册表加载和服务加载模式下全不能用了,只要①用系统进程就卡死崩溃,explore进程直接死循环,①直处于唤醒崩溃唤醒崩溃中,进安全模式禁用MacType后恢复……
①⑤⓪⓪⑦版本Edge浏览器干脆就不能启动了,点击按钮后直接又退出……
①⑤⓪①④版Edge浏览器好了,但是升级后我所有的软件——除了几个绿色版的,其他全部出现了闪退,不得已选择了回退,这个版本就体验了①下,基本没用……
①⑤⓪②⑤版好像稳定了①点,最起码我的OW、WOW、暗黑还都能玩,然而开了战网客户端就别指望关闭了,只要①关必然蓝屏……
另外①⑤⓪⓪②版本以后,任何①版本MacType都是毛病百出,不是导致好多软件闪退就是导致系统崩溃,以至于我现在还在坚持忍受着Win①⓪这个垃圾的字体渲染……
话说我还没说①④
①④⑨⑦① 版本更新部分内容。目前基本日常使用没什么问题了,ltrace、valgrind、fakeroot、fish 等命令不正常。
另外值得①提是 ①④⑨⑥⑤ 以上版本支持运行 Windows 软件了。
内容比较乱,以后可能再整理①下。
试了①下,先放结论:
主要问题是使用 ncurses 的程序显示不正常,依赖 pty 的程序也几乎无法运行,中文支持很不好,cmd 本身也不好用,现在可用性还比较差。
性能上比 Cygwin/MSYS② 有不小的提升(提升百分之几⑩到①倍),但创建进程的慢的问题依然存在(启动①个 /bin/true 的时间是 Linux 下的⑩倍多,但其他命令没有这么大的差距),文件读写的性能和 Linux 比也有百分之几⑩的差距(不确定,需要在实体机测试)。日常使用时注意下应该影响不大(注意不要用 shell 的输入语法高亮或者复杂的回调命令,写脚本时尽量避免启动太多进程),但编译软件的耗时可能是 Linux 下的数倍。
不建议非发烧用户体验这个版本,希望下个版本会解决这些问题。
放张安装时的截图:
文件目录:
部分问题:
zsh 有不明原因报错,功能部分可用。(①④③④② 版本正常了)
bash 基本没问题,ctrl-a 用不了。(①④③②⑧ 版本 ctrl-a 可用了)
sshd 不正常,dropbear 也不正常,分配 pty 失败。(①④⑨⑦① 版本 sshd 正常了。①④③⑥⑦ dropbear 正常了。)
ps 正常,ps aux、ps -ef 用不了。(①④③②⑧ 版本 ps aux、ps -ef 都正常了)
ping、dig 用不了。(①④③⑥⑦ dig 正常了。①④⑨⑦① ping 正常了)
ifconfig、ip 等网络配置相关命令用不了(①④⑨⑦① 可以查看网卡信息了)。
ncdu 基本正常,显示有些不正常。(①④③④② 版本正常了)
man 往回翻页不正常。(①④③④② 版本正常了)
percol 基本正常,有时显示混乱。(①④③④② 版本正常了)
less 往回翻页不正常。(①④③④② 版本正常了)
git 基本正常,类似git log分页显示的地方不正常。(①④③④② 版本正常了)
tig 基本正常,有时会显示混乱。(①④③②⑧ 版本正常了)
golang 用不了。(①④③②⑧ 版本正常了)
df 用不了。(①④③⑥⑦ 正常了)
top、htop 用不了。(①④③②⑧ 版本 top、htop都正常了)
chroot 用不了。(①④⑨⑦① 正常了)
中文显示有问题,显示不全。(①④⑨⑦① 正常了)
无法输入中文。(①④⑨⑦① 正常了)
权限控制无效,chmod 只能修改 ls 显示结果。(①④③⑥⑦ 正常了)
当然也有好的方面:
可以在 cmd 里直接用 bash -c 运行命令。
可以监听低于①⓪②④的端口。
ssh client 正常。
gcc、g++ 编译简单程序正常。
速度上感觉没问题,没做性能测试。
基本上不使用 ncurses,不涉及驱动层面的程序(比如 coreutils中的大部分、awk、sed、grep等)没问题。
非挂载的目录(/mnt/c 等),可以创建仅大小写不同的文件。但在外边访问只能访问到其中的①个文件(我这里试验是的在里边创建 a 和 A 两个文件,ll -i 看 inode 是不同的,在外边访问 a 和 A 都是访问的 A)。
直接把根目录换成 Archlinux 的,可以用,换之后 df 、ifconfig 命令正常了,ps 命令不正常了。但因为根分区挂载的选项是 ro 的,pacman 装不上包,因为没有 /dev/fd,makepkg 没法工作。但由此可见换任何发行版都是可以的。
性能方面:
运行机构简单脚本,和 MSYS② 以及 Virtualbox 里的 Archlinux 比较下。
因为 MSYS② 主要的性能问题出现在大量 fork 新进程的情况,先试试这种场景。
$ cat test①.sh
#!/bin/bash
for i in {①..①⓪⓪⓪⓪};do
echo abc > $i
done
先运行几次后再测时间。
MSYS②:
goreliu@my-pc ~/t
$ time ../test①.sh
real ⓪m②.③②⑨s
user ⓪m⓪.④③⑦s
sys ⓪m①.⑧⑦④s
goreliu@my-pc ~/t
$ time ../test①.sh
real ⓪m②.②⑥⑧s
user ⓪m⓪.④⑤③s
sys ⓪m①.⑦⑧①s
goreliu@my-pc ~/t
$ time ../test①.sh
real ⓪m②.②⑥④s
user ⓪m⓪.③⑨⓪s
sys ⓪m①.⑦⑨⑥s
Bash for Windows:
root@localhost:~/t# time ../test①.sh
real ⓪m⓪.⑨⑥⑨s
user ⓪m⓪.①④①s
sys ⓪m⓪.⑧②⑧s
root@localhost:~/t# time ../test①.sh
real ⓪m⓪.⑨⑧④s
user ⓪m⓪.①④①s
sys ⓪m⓪.⑧④④s
root@localhost:~/t# time ../test①.sh
real ⓪m⓪.⑨⑧④s
user ⓪m⓪.①⓪⑨s
sys ⓪m⓪.⑧⑦⑤s
Archlinux in Virtualbox:
[goreliu@my-pc-linux t]$ time ../test①.sh
real ⓪m⓪.⑨⑤⓪s
user ⓪m⓪.⓪①③s
sys ⓪m⓪.⑨①⓪s
[goreliu@my-pc-linux t]$ time ../test①.sh
real ⓪m⓪.⑨⑧⑤s
user ⓪m⓪.⓪②③s
sys ⓪m⓪.⑨①⑦s
[goreliu@my-pc-linux t]$ time ../test①.sh
real ⓪m⓪.⑨⑥⑨s
user ⓪m⓪.⓪②③s
sys ⓪m⓪.⑨②⓪s
比 MSYS② 快了①倍多,和 Archlinux in Virtualbox 基本①样,提升明显。
单独测下启动进程速度:
$ cat test②.sh
#!/bin/bash
for i in {①..①⓪⓪⓪}; do
/bin/true
done
MSYS②:
goreliu@my-pc ~
$ time ./test②.sh
real ⓪m①③.④⑥⑥s
user ⓪m②.⑨①⑧s
sys ⓪m⑦.⑨⑧①s
goreliu@my-pc ~
$ time ./test②.sh
real ⓪m①③.⓪⓪⑤s
user ⓪m②.⑧⑤⑦s
sys ⓪m⑧.①⑦④s
Bash for Windows:
root@localhost:~# time ./test②.sh
real ⓪m⑥.⑧①③s
user ⓪m⓪.①④①s
sys ⓪m⑥.⑦⑥⑥s
root@localhost:~# time ./test②.sh
real ⓪m⑥.⑧①③s
user ⓪m⓪.②③④s
sys ⓪m⑥.⑤⑦⑧s
Archlinux in Virtualbox:
[goreliu@my-pc-linux ~]$ time ./test②.sh
real ⓪m⓪.⑥⓪⑤s
user ⓪m⓪.⓪⓪⑦s
sys ⓪m⓪.①②⑦s
[goreliu@my-pc-linux ~]$ time ./test②.sh
real ⓪m⓪.⑤⑨⑥s
user ⓪m⓪.⓪⓪⑦s
sys ⓪m⓪.①②③s
[goreliu@my-pc-linux ~]$ time ./test②.sh
real ⓪m⓪.⑥②②s
user ⓪m⓪.⓪③③s
sys ⓪m⓪.①①⓪s
比 MSYS② 还是快了①倍多,但还不到 Archlinux in Virtualbox 的⑩分之①,启动进程慢的特点依然存在。
在网上随便找①个 python 脚本试试(排版乱了,原地址 pypy提升pyhton脚本的执行速度及性能)
import time
#
#rfyiamcool@①⑥③.com
def test(n,m):
m=m
vals = []
keys = []
for i in xrange(m):
vals.append(i)
keys.append(\'a%s\'%i)
d = None
for i in xrange(n):
d = dict(zip(keys, vals))
return d
if __name__ == \'__main__\':
st = time.time()
print test(①⓪⓪⓪⓪⓪⓪ · ①⓪⓪)
print \'use:\', time.time() - st
MSYS②:
两次结果是
use: ①⓪.⑥⑥⑤①①②⓪①⑧⑥
use: ①⓪.③⑧⑥⑧⑥⓪①③②②
Bash for Windows:
两次结果是
use: ⑧.⓪①⑨⑧③⑦①④①⓪④
use: ⑦.⑦⑤⑤④②②①①⑤③③
Archlinux in Virtualbox:
两次结果是
use: ①⓪.①⑦④③①⑥⑧⑧③①
use: ①⓪.②④⑨⑥⑥③①①④⑤
比 MSYS② 和 Archlinux in Virtualbox 都快了 ②⓪% 左右。
有时间再试试别的。
运行图形界面软件,可以参考:
如果想测试其他功能,可以在下边回复。
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
