ファイルアクセスとsocketってどっちがはやいんだろうね?
まあ、あれです。
PHPでコンフィグファイルから初期設定を読み込んでいるのだけど、
毎ページ表示するごとにファイルにアクセスするのもいかがなものかと。
んで、それを早くするテストってわけ。
仕様としては次の比較になります。
★ファイルアクセス
単純なファイルアクセス。
ファイルをオープンし、freadで読み込んで、クローズする。
★SOCKET I/F
SOCKET Serverはlocalhostに起動し、localhostから呼び出す。
Server側は変数に保存された(つまりオンメモリ上のデータを)返す仕様。
さーて、どっちが早いかな。
結果は
SOCKET :0.00169 sec
ファイルアクセス:0.000276 sec
ファイルアクセスのほうが6~7倍早いですなあ。
当初の予測では、オンメモリである分SOCKETの方が早いと思っていたのだけど、
・ディスクのキャッシュが利いている
・SOCKET通信だと、localhostでもNetwork I/Fへのアクセスが発生?
なので、ファイルアクセスの方が早い結果になったと自己分析。
shared memoryが使えればもっとよいのだろうけど、Unix onlyだねー。
(追記)
shared memoryも計ってみたところ
0.00077
それでもファイルアクセスが早い。
まあ、あれです。
PHPでコンフィグファイルから初期設定を読み込んでいるのだけど、
毎ページ表示するごとにファイルにアクセスするのもいかがなものかと。
んで、それを早くするテストってわけ。
仕様としては次の比較になります。
★ファイルアクセス
単純なファイルアクセス。
ファイルをオープンし、freadで読み込んで、クローズする。
★SOCKET I/F
SOCKET Serverはlocalhostに起動し、localhostから呼び出す。
Server側は変数に保存された(つまりオンメモリ上のデータを)返す仕様。
さーて、どっちが早いかな。
結果は
SOCKET :0.00169 sec
ファイルアクセス:0.000276 sec
ファイルアクセスのほうが6~7倍早いですなあ。
当初の予測では、オンメモリである分SOCKETの方が早いと思っていたのだけど、
・ディスクのキャッシュが利いている
・SOCKET通信だと、localhostでもNetwork I/Fへのアクセスが発生?
なので、ファイルアクセスの方が早い結果になったと自己分析。
shared memoryが使えればもっとよいのだろうけど、Unix onlyだねー。
(追記)
shared memoryも計ってみたところ
0.00077
それでもファイルアクセスが早い。
Windowsも似たような技術で
共有メモリってものがあるのですよ。
(実際のシステム開発でもやったことがあるので^^)
CreateFileMappingあたりを調べてみればわかります。
興味がございましたらお調べくださいまし。