アニメ『ウマ娘 プリティーダービー』(2018)
涙腺ゆるゆるなので、ちょっとした感動があるだけで、泣いてしまう私ですが、劇中のスペシャルウィークがデビュー戦で勝利した時にも、泣いてしまいました。いやあ実に面白い。馬娘たちのかけっこが、すごくスピード感あって、手に汗握ります。そして、レースだけでなく、勝利した馬娘は、ステージで歌と踊りを披露します。レースだけじゃ物足りない人も満足するだろうアニメです。
馬娘たちはみんな尻尾があるのですが、本当の馬は、尻尾で体にまとわりつく虫を叩き落としたりするらしいです。感情の落ち着かないと、やたら尻尾が動いたり。こんな蘊蓄を知ったのでアニメを見るときは、尻尾の動きにも注意しています(いつ虫を叩き落としてくれるか期待)。
(Linux入門はコチラ→中級者のためのLinuxコマンド入門)
さて今回は、tailコマンド。標準入力を受け取って処理する時、headだと先頭から処理されるので、処理時間を気にしなくても良いでしょうけど、tailの場合は、全部読み込んでからじゃないと末尾が分からないハズ。確認してみます。
headから。seqコマンドで大量の文字列を作って、headに渡します。
takk@deb9:~/tmp$ time seq 43214321 | head 1 2 3 4 5 6 7 8 9 10 real 0m0.002s user 0m0.000s sys 0m0.000s takk@deb9:~/tmp$
一瞬で終わりました。
次は、tailコマンド。
takk@deb9:~/tmp$ time seq 43214321 | tail 43214312 43214313 43214314 43214315 43214316 43214317 43214318 43214319 43214320 43214321 real 0m0.853s user 0m0.664s sys 0m0.176s takk@deb9:~/tmp$
大量と言いつつ今のコンピュータは性能が良いので、一瞬でした。
でも、headと比べたら、0.85msも遅いです。
当然tac等、間に挟んでも、処理時間が伸びるだけです。
takk@deb9:~/tmp$ time seq 43214321 | tac | head 43214321 43214320 43214319 43214318 43214317 43214316 43214315 43214314 43214313 43214312 real 0m1.733s user 0m0.496s sys 0m0.396s takk@deb9:~/tmp$
次は、標準入力は使わずにファイルから読み込んでみます。標準入力が時間がかかる理由は、全行を読み込んでるから、と仮定すると、ファイルから読み込む場合は、時間がかからないハズです。
同じ文字列をファイルに保存します。
takk@deb9:~/tmp$ seq 43214321 >a.txt takk@deb9:~/tmp$ ls -lh a.txt -rw-r--r-- 1 takk takk 361M 6月 2 20:01 a.txt takk@deb9:~/tmp$
361M Byteでした。
では、headで読み込み。
takk@deb9:~/tmp$ time head a.txt 1 2 3 4 5 6 7 8 9 10 real 0m0.001s user 0m0.000s sys 0m0.000s takk@deb9:~/tmp$
headの方は早くなってますね。
次は、tailです。
takk@deb9:~/tmp$ time tail a.txt 43214312 43214313 43214314 43214315 43214316 43214317 43214318 43214319 43214320 43214321 real 0m0.001s user 0m0.000s sys 0m0.000s takk@deb9:~/tmp$
ほぼheadと変わらなくなりました。
ファイルから読み込み場合は、途中を読み込む必要がなく、ファイル末付近からアクセスすれば良いので、処理時間が早くなったんだろうと思います。
コメント