次のコードで、ネットワークの 約8MB のテキストデータを受信していた。
CHttpFile* pFile; (省略) CString strContent; CString LINE_SEPARATOR = "\r\n"; CString buf; while (pFile->ReadString(buf)) { strContent += buf; strContent += LINE_SEPARATOR; }
Visual Studio 2005 で実行していた時は、25,000 ms かかっていた。
このプログラムを Visual Studio 2013 でビルドし、実行したところ、58,000 ms と2倍以上かかるようになった。
ReadString(CString) が遅いと思われるので、次のように書き換えた。
CString strContent; TCHAR * buf = new char[DATA_SIZE]; for (;;) { int result = pFile->Read(buf, DATA_SIZE); if (result <= 0) break; buf[result] = 0x00; } strContent = buf; delete[] buf;
その結果、Visual Studio 2005 と Visual Studio 2013 のいずれで実行しても 8,000 ms と大幅に高速化できた。