gpt4 book ai didi

performance - 随机播放文本文件 Delphi 源代码或其他任何内容

转载 作者:行者123 更新时间:2023-12-03 15:42:46 24 4
gpt4 key购买 nike

我有一个包含 10,000 个条目的字符串列表。我有一个随机播放程序,但访问任何项目都需要花费大量时间。浏览所有 10k 项需要花费大量时间。

我想将其保存在磁盘上,然后使用另一种方法对文件进行随机播放。

有什么建议吗?

最佳答案

你的随机播放程序是如何实现的?特别是交换例程?如果您自己编写了以下代码:

vTempSrting := vStringList[I]; 
vStringList.Delete(I);
vStringList.Insert(J,vTempString);

速度会很慢。在字符串列表上使用交换方法。

此代码在我相当普通(3 年)的计算机上花费了 78 毫秒:

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils,Classes,uIntegerList,Windows,Math;

procedure Shuffle(aSL : TStringList);
var I,J : integer;
begin
for I := 0 to aSL.Count-1 do
begin
J := randomrange(I,aSL.Count);
aSL.Exchange(I,J);
end;
end;

procedure CreateTestFile;
var
vSL : TStringList;
I : integer;
begin
vSL := TStringList.Create;
try
for I := 1 to 100000 do vSL.Add('Sample text #'+inttostr(I));
vSL.SaveToFile('c:\test.txt');
finally
vSL.Free;
end;
end;

function TestShuffle : longword;
var
vSL : TStringList;
vTick0 : longword;
begin
vSL := TStringList.Create;
try
vTick0 := gettickcount;
vSL.LoadFromFile('c:\test.txt');
Shuffle(vSL);
vSL.SaveToFile('c:\test.txt');
Result := gettickcount - vTick0;
finally
vSL.Free;
end;
end;

begin
CreateTestFile;
writeln(TestShuffle,' ms');
readln;
end.

关于performance - 随机播放文本文件 Delphi 源代码或其他任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1600012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com