我正在使用C ++ Builder Tokyo 10.2.2。我有一个项目涉及编写对TStringList来说太大的文件(它会导致内存错误)。
因此,我创建了一个使用TStreamWriter的备用保存系统。这很有效,除了一个小问题。与TStringList的Add()相比,似乎TStreamWriter的WriteLine()非常慢。
以下是比较两者的代码。
TStopwatch sw = TStopwatch::StartNew ();
TStreamWriter* writer = new TStreamWriter (sFileName, false, TEncoding::UTF8, 1024);
for (int i=0; i<1000000; i++)
writer->WriteLine (i);
delete writer;
sw.Stop ();
TTimeSpan ts = sw.Elapsed;
String s = String (ts.TotalMilliseconds) + " Milliseconds";
TStopwatch sw2 = TStopwatch::StartNew ();
TStringList* list = new TStringList ();
for (int i=0; i<1000000; i++)
list->Add (i);
list->SaveToFile (sFileName);
delete list;
sw2.Stop ();
TTimeSpan ts2 = sw2.Elapsed;
String s2 = String (ts2.TotalMilliseconds) + " Milliseconds";
我的测试系统上ts(使用TStreamWriter)的最新值是2748. ts2的最新值(使用TStringList)是522.因此,TStreamWriter需要的时间超过5倍才能实现相同的功能。 / p>
我是否遗漏了TStreamWriter可以显着提高速度的东西?