石河@DSKです。
Subject: [vcpp 00028383] CString操作って遅いのでしょうか?(J
> 具体的にはこんな感じです。
> CString theBuf;
> theBuf += theReadData; // theReadDataは読み込んだデータ
これだけではちょっと… (^^;
単一スコープ内で上記2行を行っているのなら、
> もしかして、毎回オブジェクトを作っているのでしょうか・・・。
ということでしょうし、+=演算子の結果が思惑通りにならないのでは?
theBufをstaticにするとか、クラスメンバにしてファイル読み込みはメンバ関数
で行うとか、
CString theBuf;
for(;;){
... //ファイル読み込み
theBuf += theReadData;
}
みたいな形にしないと。
が、一般的にファイルの読み書きではseek時間の方が重荷になるので、読み込み
の場合なら
1.大容量の読み込みバッファを用意する
2.ファイルからバッファへ一気に読み込む
3.バッファから必要なデータの抽出
4.1へ戻る(EOFに達するまで繰り返す)
というような、seek回数を減らすコーディングをした方が高速化の効果は大きい
です。
#この辺が解ってなくて「このプログラムはCで書いてあるから遅い。アセンブラ
ならもっと速い。」というトンチンカンなことを言っている人を見たことがあり
ます。(^^;
Tschuess!
∧ ∧ ∩「半ばは自己の幸せを、半ばは他人の幸せを」
(・o・)_||
| | 石河(was 井島) 正@電算システム
∪ ̄∪∪ ̄∪ e-mail:i...@densan-s.co.jp
野獣之図
Subject: [vcpp 00028383] CString操作って遅いのでしょうか?(J
> 具体的にはこんな感じです。
> CString theBuf;
> theBuf += theReadData; // theReadDataは読み込んだデータ
これだけではちょっと… (^^;
単一スコープ内で上記2行を行っているのなら、
> もしかして、毎回オブジェクトを作っているのでしょうか・・・。
ということでしょうし、+=演算子の結果が思惑通りにならないのでは?
theBufをstaticにするとか、クラスメンバにしてファイル読み込みはメンバ関数
で行うとか、
CString theBuf;
for(;;){
... //ファイル読み込み
theBuf += theReadData;
}
みたいな形にしないと。
が、一般的にファイルの読み書きではseek時間の方が重荷になるので、読み込み
の場合なら
1.大容量の読み込みバッファを用意する
2.ファイルからバッファへ一気に読み込む
3.バッファから必要なデータの抽出
4.1へ戻る(EOFに達するまで繰り返す)
というような、seek回数を減らすコーディングをした方が高速化の効果は大きい
です。
#この辺が解ってなくて「このプログラムはCで書いてあるから遅い。アセンブラ
ならもっと速い。」というトンチンカンなことを言っている人を見たことがあり
ます。(^^;
Tschuess!
∧ ∧ ∩「半ばは自己の幸せを、半ばは他人の幸せを」
(・o・)_||
| | 石河(was 井島) 正@電算システム
∪ ̄∪∪ ̄∪ e-mail:i...@densan-s.co.jp
野獣之図