Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将文件写入磁盘时的速度慢(Delphi XE5)_Delphi - Fatal编程技术网

将文件写入磁盘时的速度慢(Delphi XE5)

将文件写入磁盘时的速度慢(Delphi XE5),delphi,Delphi,我正在处理从数据库MySQL到磁盘的大文件。我的文件每个文件可能达到GB。我担心的是,我试着用几种方法编写这个文件,但结果都是一样的(完成这个文件需要更长的时间) 生成一个0.2 GB或200000 KB的文件几乎需要2个半小时才能完成。我尝试使用TSQLQuery或TClientdataset获取数据,但它们在编写文件时给出了相同的结果(完成所需的时间) 同时,对于编写过程,我使用了TFileStream和Windows.API类来编写文件,它们之间没有区别。我的期望是,这将带来一些不同,因为

我正在处理从数据库MySQL到磁盘的大文件。我的文件每个文件可能达到GB。我担心的是,我试着用几种方法编写这个文件,但结果都是一样的(完成这个文件需要更长的时间)

生成一个0.2 GB或200000 KB的文件几乎需要2个半小时才能完成。我尝试使用TSQLQuery或TClientdataset获取数据,但它们在编写文件时给出了相同的结果(完成所需的时间)

同时,对于编写过程,我使用了TFileStream和Windows.API类来编写文件,它们之间没有区别。我的期望是,这将带来一些不同,因为他们以不同的方式处理

我也尝试过以前发布在 ()

但它仍然没有提高性能

这种情况只发生在大文件中。当我尝试生成一小部分文件时,速度相当快

我在D7中运行了相同的代码。写作过程只需几分钟。我使用XE5的原因是我想避免使用BDE的组件


是否有其他方法可以提高将大型文件写入磁盘的性能?

尝试在clientdataset上禁用控制,在循环之前,它将显著提高clientdataset滚动记录的速度。

您确定文件写入是瓶颈吗?从数据库中获取所有数据而不将其写入文件需要多长时间?您首先需要确定性能瓶颈在哪里。Ì打赌问题不在于写入文件,而在于从数据库中获取数据…
TFileStream
等。速度与您的速度一样快。如果你不把事情搞得一团糟,所有的文件IO例程都比实际的磁盘操作快得多,因此在这方面没有什么好处。没有MVCE,我们除了向你提出问题和猜测之外,真的什么都说不出来。您需要把实际的慢代码放在问题中,并且您还需要告诉我们有关您的系统的一些信息(RAM、磁盘类型)。当然,它可以是像磁盘上坏扇区这样简单的事情,在这种情况下,所有的赌注都没有了,但是没有代码,我们就没有什么明智的贡献。我无法理解为什么您希望获得代码方面的帮助,而您不想显示代码。请重新考虑。是什么让您认为存在与数据集相关联的可视控件?问题中没有说明这一点。