mmapとfseek
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGWin32ならmmapのかわりにCreateFileMappingで。
0002名無しさん
NGNGいまどき512MBとか珍しくないからmmap。
0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGVMの interfaceに地下そうだし。
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNGmmapならいくつでも持てるぞ。というかファイルポインタないし。
つまり、複数スレッドから同時にアクセスするのにいいかもしれん。
そんな用途無いと思うけど。
0007デフォルトの名無しさん
NGNGファイルからよむ必要があるから、fseekとかよりは遅いはず。
ただ、DISKからの読み込みは、それより桁違いに遅いから、どーでもいいかと。
0008デフォルトの名無しさん
NGNG数の領域を繰り返しアクセスするような場合だとmmapの方
が速そう。
0009デフォルトの名無しさん
NGNG0010いつでもどこでも名無しさん
NGNGあるから一概にはいえんわな。でも
良いハードの性能をフルに出せるのはmmap
だと思う。
0011デフォルトの名無しさん
NGNG系は、ディスクデバイスからバッファキャッシュ、バッファキャッシュ
からユーザのメモリ空間と 2 回のメモリ転送が発生するから、mmap()
と比較するとバスにかかる負担が大きいし遅かったと思う。
とはいえ >>7 が言ってるのも一理あるし、そもそも fread() だと
カーネル内部のキャッシュに加えてユーザ空間でもキャッシュが入っ
てるわけで、状況はより複雑。実際にはアクセスパターンやデータ量、
ハードウェア構成、使っている VM の性能に左右される部分が大きく、
一概には言えないよ。
とりあえず、自分の用途に合わせてテスト用のコードを書いて試して
みれば? 性能を語るなら、まずはプロファイルを取るところからス
タートしないと。
■ このスレッドは過去ログ倉庫に格納されています