有没有办法加快TStreamWriter :: WriteLine()?

时间:2018-02-13 19:33:26

标签: delphi c++builder

我正在使用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可以显着提高速度的东西?

0 个答案:

没有答案