Conference Room SAD
[thread display] [new arrival display] [word search] [past log] [管理用]

Subject Re^5: SAD Update. V1.0.10.2.3b. g95 compatible.
Date: 2008/02/19(Tue) 21:17:40
ContributorAkio Morita

> ですから、g95用では、すでにfgetcは使わないようになっています(使おうと思っても存在しない、fgetcのダミールーチンも使っていない)。他のコンパイラの場合も同じに出来ますが、その前に少しテストしたかったので、fgetcを使うルーチンが残っているだけです。
>
src/itfgetbuf_.cの実装に関してですが、1byte毎に read(2)を呼び出すと
system callに伴う kernel call gateや context switchのコストが増加による
大きなファイルを読み込む際のパフォーマンス低下が予測されます
# fgetc_()[Fortran]や fgetc()[LIBC]の場合、後ろに入力バッファを抱えており
# read(2)はバッファフィルにだけ使われるので system callに伴う overheadは
# 低減されている

fgetc_()を使わないままで、パフォーマンスの改善策としては
- Fortran I/O LUNを捨てて LIBCの stdio library(FILE構造体)へ乗り換える
  o Fortran側で FILE構造体へのポインタをどう管理するかが問題になる
  o write(lfno,*)を全てリプレースする必要がある
- File Descripter毎に自前のバッファリング機構を用意して管理する
  o write(lfno,*)をリプレースすると、Fortran I/O LUNを File Descripter(整数)で置き換え可能


- 関連一覧ツリー (Click ▼ to display all articles in a thread.)