V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  haoliang  ›  全部回复第 5 页 / 共 12 页
回复总数  231
1  2  3  4  5  6  7  8  9  10 ... 12  
2022-07-14 16:21:03 +08:00
回复了 testcaoy7 创建的主题 Linux 今天突然 Arch Linux 无法安装了
这不仅不提供报错,还把大家往可能错误的方向诱导 -- 语不惊人死不休的性格估计是个。各位注意保护好自己啊
@wxf666 我 strace 看了 bash 下两种写法,确实都调用 pipe2 ,差别在输入的长度不够 64k 时,`|` 多创建了个进程写入数据到 pipe; 超过 64k 时,我没看 `<<<str` 的 strace log ,毕竟这个数量的数据不像是直接字符串形式存在脚本里的;如果用 <file 、 <(cat file),我日等等,写个脚本还得深入到 syscall 级别,我觉得意义不大,这块我也不熟。等个较真的大佬吧

我还写了个 benchmark 针对这种情况分别给 sh 、bash 、zsh ,其中 sh 的 pipeline 比 redirect 快 64%,不过 cpu 占用高 31%;其他两个 shell 中 redirect 比 pipeline 高效。

```
# sh pipeline*100
0.10user 0.09system 0:00.14elapsed 136%CPU (0avgtext+0avgdata 4208maxresident)k
0inputs+0outputs (0major+22025minor)pagefaults 0swaps
# sh redirect*100
0.13user 0.10system 0:00.22elapsed 104%CPU (0avgtext+0avgdata 4152maxresident)k
0inputs+0outputs (0major+13876minor)pagefaults 0swaps
# bash pipeline*100
0.19user 0.16system 0:00.27elapsed 132%CPU (0avgtext+0avgdata 4236maxresident)k
0inputs+0outputs (0major+21421minor)pagefaults 0swaps
# bash redirect*100
0.11user 0.12system 0:00.22elapsed 104%CPU (0avgtext+0avgdata 4164maxresident)k
0inputs+0outputs (0major+13683minor)pagefaults 0swaps
# zsh pipeline*100
0.17user 0.17system 0:00.29elapsed 120%CPU (0avgtext+0avgdata 3992maxresident)k
0inputs+0outputs (0major+20326minor)pagefaults 0swaps
# zsh redirect*100
0.11user 0.14system 0:00.24elapsed 105%CPU (0avgtext+0avgdata 4020maxresident)k
0inputs+0outputs (0major+14989minor)pagefaults 0swaps
```

用到的 makefile

```

strace:
# bash
@ strace -f bash -c 'echo "abc:def" | /usr/bin/cut -d: -f 1 >/dev/null' 2> bash.pipeline.strace
@ strace -f bash -c '/usr/bin/cut -d: -f 1 <<<"abc:def" >/dev/null' 2> bash.redirect.strace
# sh
@ strace -f sh -c 'echo "abc:def" | /usr/bin/cut -d: -f 1 >/dev/null' 2> sh.pipeline.strace
@ strace -f sh -c '/usr/bin/cut -d: -f 1 <<<"abc:def" >/dev/null' 2> sh.redirect.strace

benchmark:
# sh pipeline*100
@ time sh -c 'for _ in {0..100}; do echo "abc:def" | /usr/bin/cut -d: -f 1 >/dev/null; done'
# sh redirect*100
@ time sh -c 'for _ in {0..100}; do /usr/bin/cut -d: -f 1 <<<"abc:def" >/dev/null; done'
# bash pipeline*100
@ time bash -c 'for _ in {0..100}; do echo "abc:def" | /usr/bin/cut -d: -f 1 >/dev/null; done'
# bash redirect*100
@ time bash -c 'for _ in {0..100}; do /usr/bin/cut -d: -f 1 <<<"abc:def" >/dev/null; done'
# zsh pipeline*100
@ time zsh -c 'for _ in {0..100}; do echo "abc:def" | /usr/bin/cut -d: -f 1 >/dev/null; done'
# zsh redirect*100
@ time zsh -c 'for _ in {0..100}; do /usr/bin/cut -d: -f 1 <<<"abc:def" >/dev/null; done'
```
“请教”言重了,我可能有错。pipeline 跟 redirect 的差别,我觉得这个[佐证])( https://stackoverflow.com/questions/9553628/piping-and-redirection)应该没问题
@wxf666 写回复的时候,我以为`<<<`是直接写入到 cmd 的 stdin ,不过没求证
对于楼上回答的补充:
* bash 的文本操作很难用是事实,所以用外部程序替换来快速实现功能没毛病; 2/8 原则,我觉得没必要搁这死磕
* echo 是 shell built-in command , `echo xx | cmd` 的主要开销主要在这个 pipeline 上;
* 很显然重复使用的 group_name* 需要提出来;

对于更早楼层的补充:
* bash 中 for, while 的每次执行不会创建 subshell (可以通过 subshell 中不能修改父进程中变量的值来验证)
2022-07-12 14:21:52 +08:00
回复了 franklinre 创建的主题 Java 请教,如何根据时间生成有序号码?
根据并发数量选用 second/millisecond/nanosecond 级别的时间戳 - 今天 00:00:00 的时间戳,不考虑号码的连续性且不强制要求不能重复
2022-07-12 04:20:04 +08:00
回复了 JoseGuo 创建的主题 Redis 有一个 Redis 通知的问题想问一下大家
忘了提虽然设想是单进程,但多线程 /协程是不可避免的 ...
2022-07-12 04:14:28 +08:00
回复了 JoseGuo 创建的主题 Redis 有一个 Redis 通知的问题想问一下大家
一个 daemon 就能搞定吧:进程启动时加载全量数据、使用时间轮进行任务排期、根据时间戳之类的 offset 增量添加数据。(单纯想想还挺简单的)
2022-07-12 02:45:03 +08:00
回复了 uiosun 创建的主题 程序员 吐槽:到底什么是“优雅”? PHP 的新名词真是含义莫名……
哈哈,都没人在意我这个拼写错误: idiomatic
2022-07-11 00:25:54 +08:00
回复了 uiosun 创建的主题 程序员 吐槽:到底什么是“优雅”? PHP 的新名词真是含义莫名……
不吧,pythonic 类似于 idomatic ; python 这边对标的有 for humans™
2022-07-11 00:14:14 +08:00
回复了 pista 创建的主题 Android 夏天室外用手机烫的吓人怎么办
也有可能是开了 5g 的原因,因此我从不开 5g
2022-07-11 00:11:19 +08:00
回复了 uiosun 创建的主题 程序员 吐槽:到底什么是“优雅”? PHP 的新名词真是含义莫名……
还有个烂大街且含义不明的形容词 “modern”
2022-07-09 12:19:59 +08:00
回复了 liyifu1994 创建的主题 问与答 坛子里大神多,我想问个 Python 内存占用的问题
我不相信 `for i in range(10**20): print(i)` 会占满内存。尽管 sys.stdout 是 buffered ,但 buffer 一般也就 8k
2022-07-09 12:13:05 +08:00
回复了 crayygy 创建的主题 问与答 请教一个开发用笔记本选择的问题, 12700H or 6800H?
不知道最近的在 linux 上 intel cpu security mitigation 默认是否开启了,开启后对性能影响是不是还是 25%?
[gotty]( https://github.com/yudai/gotty) 解君愁
2022-07-07 21:36:39 +08:00
回复了 Exuanbo 创建的主题 JavaScript Bun 发布了 beta 版本: Bun is a fast all-in-one JavaScript runtime
看这[星星的涨势]( https://star-history.com/#Jarred-Sumner/bun&Date), 7 天时间从 2k 涨到 12k ! web 前端这块也太热了吧
2022-07-06 20:47:27 +08:00
回复了 yuuko 创建的主题 Vim vim roadmap
最后一条是指类似 neovim 中的 winbar 吗?
2022-07-02 17:34:26 +08:00
回复了 fox0001 创建的主题 Linux 刚遇到个《盗梦空间》问题……
应该有环境变量吧,比如 tmux 会给 session 下的 shell 设置 TMUX 变量。
厉害!
(我日,官方文档就一页,你这能搞出这么多视频,学不动了!)
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3265 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 43ms · UTC 12:55 · PVG 20:55 · LAX 05:55 · JFK 08:55
Developed with CodeLauncher
♥ Do have faith in what you're doing.