- 234 名前:225 mailto:sage [2008/01/21(月) 19:58:24 ]
- >>231
う〜ん・・・ boost::timer t; for( int i=0; i < 10; ++i ) { ifstream fin( "in.dat", ios::binary ); ofstream fout( "out.dat", ios::binary ); copy ( istreambuf_iterator<char>( fin ), istreambuf_iterator<char>(), ostreambuf_iterator<char>( fout ) ); } cout << "iterator=" << t.elapsed() << endl; t.restart(); for( int i=0; i < 10; ++i ) { ifstream fin( "in.dat", ios::binary ); ofstream fout( "out.dat", ios::binary ); while( !fin.eof() ) { char buf[BUFSIZ]; fin.read( buf, BUFSIZ ); fout.write( buf, BUFSIZ ); } } cout << "read_write=" << t.elapsed() << endl; のコードでやったら、iterator=2.093, read_write=0.438で、5倍ほど差がつきました。 環境は WinXP + VC8 です。 まぁ、どうしても iterator 使いたいわけじゃないので、おとなしくread() と write() 使います。
|

|