> We didn't beat GNU's yes, and there probably is no way. Even with the function overheads and additional bounds checks of GNU's yes, the limit isn't the processor, it's how fast memory is. With DDR3-1600, it should be 11.97 GiB/s (12.8 GB/s), where is the missing 1.5? Can we get it back with assembly?
yes! (スコア:0)
yesコマンドなんて最初は「何だこれ?」と思ったけど
最近はPC起動するたびに使ってる気がする
何かと手間が省けるんだよね
地味イーーにものぐさができる
Re: (スコア:0)
初期のUNIXのシンプルさ、柔軟さを今に伝える貴重なプログラム。
...なのだが、GNU 版のソースとかを見るとロブ・パイクがUNIXは腐臭を放っていると発言したのも最もだと思わせる。
Re: (スコア:0)
でも例えばprintfを改良してどうにかなる問題じゃないからな。ループで問答する時のバッファをどうするかって話なんだから、まさにアルゴリズムの優劣が結果にダイレクトに反映されてるわけだ。
Re: (スコア:2)
アルゴリズムとは言い難い感じ。
一行ずつチマチマ投げるよりも、ページ境界に合うのを期待した大きい領域に何行も詰め込んで投げる方が早いよねっていう。
Re: (スコア:0)
まさにアルゴリズムだと思うのだが…
単純というだけでアルゴリズムに変わりはないでしょ。
Re: (スコア:-1)
unix界隈はこういうアルゴリズムで盛り上がる糞の集まりだという意味では、その通りです
Re: (スコア:0)
unixのというよりオープンソースの話だろう。いやプロプラでも見えないだけで実はくだらないところで最適化を頑張っているのかもしれないが。
Re: (スコア:0)
> We didn't beat GNU's yes, and there probably is no way. Even with the function overheads and additional bounds checks of GNU's yes, the limit isn't the processor, it's how fast memory is. With DDR3-1600, it should be 11.97 GiB/s (12.8 GB/s), where is the missing 1.5? Can we get it back with assembly?
yyyyyyyを毎回メインメモリから読み出していると考えているようだが、3次キャッシュには乗ってんじゃねーの?
L3のバンド幅は俺は知らんが、とりあえずこいつの認識は間違ってるかもしれんぞ
Re: (スコア:0)
つか、yesのwriteでユーザー空間からyyyyyyを読んでシステム空間のパイプのバッファに書く、pvはパイプのバッファからyyyyyを読む、で都合3回メモリアクセスするよな
Re:yes! (スコア:0)
おっと、pvは/dev/nullにリダイレクトしてるのか
じゃあpvはreadでシステム空間(パイプ)から読んでpvのユーザー空間に書くところまではやるのかな
そうするとyyyyyyあたり4回の読み書きか
なんにせよメインメモリのバンド幅は関係ないし、ページサイズがどうのというのも見当はずれじゃねの