最近のOSは64bit化して広大なメモリを扱えるようになった。個人的に一番のメリットと思っているのは、ファイルキャッシュ機能。いちどディスクから読まれたファイルはメモリにキャッシュされ、次回からはディスクではなくメモリから読まれるため高速。これは最近読んだ下記の本で知った。OSが標準装備しているインメモリ機能?と呼んでいいのかな?今回の記事の内容は、この本に記載されていることを実際に検証したことである。興味がある人は是非ご購入を。www.amazon.co.jpシェルスクリプトとテキストファイルで、何か大き目のデータを扱ってみたいと思っていたところ、某RDBを使って処理が遅いというのを思い出した。いうことでちょっとしたプロトタイプを作ってみた。約5000万レコードくらいのオーダで、ちょっとしたプロトタイプのシェルスクリプトを作ってみた。検証用のテストデータを作るのに苦労した。Airのファンがビュンビュン回ってぶっ壊れるんじゃなかろうかと不安だった・・・データ全体としては4GB弱になった。データは年月日で分割してテキストファイルを設置。どのくらいのスピードになるか?まずはファイルキャッシュが効いていない状態。MacでXcodeをインストールしていたら、purgeというコマンドが使える。これでファイルキャッシュを消すことが出来る。実行するには管理者権限が必要なのでsudo付きで。purgeしばらく操作ができない状態になるので、ちょっとビックリ。アクティビティモニタを起動して「メモリ」を選択すると、画面下に「キャッシュ」という項目がある。これがファイルキャッシュした容量。作成したシェルスクリプトをtimeコマンド付きで実行。全体的に検索が必要な条件。実行時の処理時間はこちら。0m9.443ssysがOSが動いたCPU時間、userがプログラムが動いたCPU時間、realが実際にかかった時間。userとsysを足したよりもrealが多いのは、ディスク(この場合はSSD)からデータを読み取るの時かかった時間ということ。これでもRDBよりかなり高速なようだ。この後、もう一度アクティビティモニタのメモリを見てみると、ファイルキャッシュが4.49GBまで増加。データファイルの全容量が4GB程度なので、全体的にキャッシュにのったようだ。0m2.816sものすごく早く実行できた。OS標準のインメモリ機能素晴らしい。ちなみにuserとsysを足したよりもrealが短いのは、並列処理が働いているということ。シェルスクリプトはパイプを使うことで簡単に並列処理のメリットを享受出来る。最後になったが、念のためパソコンスペックを記載しておく。はてなブログPro情報処理ってもっとシンプルにならないだろうか?PKI関連、RubyやPHP等のLL、シェルスクリプト、シェル芸、ユニケージ見習い未満。シェルスクリプトとシェル芸はきっと違うんですよ。JPはてなブログをはじめよう!papiroさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。