我正在使用 D6 Professional,需要从内存中已有的许多小字符串中创建一个特定格式的文本文件。出于性能原因,我正在考虑使用 TMemoryStream 来整理文件数据,然后通过 TFileStream 将其一次性写入磁盘。

但是我有一半忘记了在某处阅读 TMemoryStream 效率低下的内存(可能是从 D6 之前开始),尤其是在达到其容量大小之后。我的 Delphi(和 Windows API)技能不足以为自己检查 Classes.pas 代码。

(OFFTOPIC)特别是这样的代码:(Classes.pas 的第 5152 行):
NewCapacity := (NewCapacity + (MemoryDe​​lta - 1)) 而不是 (MemoryDe​​lta - 1);
(/题外话)

更让我担心的是,一个相关问题的结论
Using MemoryStream to write out to XML
不是要使用 TMemoryStream,但没有说明原因——无论是由于 TMemoryStream 本身,还是因为 TFileStream 或 I/O 设备驱动程序中有足够的缓冲,或者只是相关代码的细节。

感谢您的任何建议
问候,
菲尔

最佳答案

普通的TFileStram也可以进行缓冲,这足以优化I/O。将MemoryStream放在前面只会增加开销。

10-08 15:53