FMX TMemo 非常慢
FMX TMemo is painfully slow
我在写一个 Firemonkey 应用程序时 运行 遇到了一个问题:TMemo 慢得令人痛苦。加载一个 3 mb 的文件需要 12+ 秒,VCL TMemo 只需要 400 ms
这是我的测试代码:
uses
System.Threading, System.Diagnostics;
procedure TForm1.FormCreate(Sender: TObject);
begin
TTask.Run(
procedure
begin
Sleep(100);
var stopwatch := TStopwatch.Create;
TThread.Synchronize(nil,
procedure
begin
stopwatch.Start;
Memo1.Lines.LoadFromFile('../../../DemoData.json');
end);
TThread.Synchronize(nil,
procedure
begin
stopwatch.Stop;
Caption := stopwatch.ElapsedMilliseconds.ToString;
end)
end);
end;
整个测试项目(包括 JSON 文件)可以在这里找到:
https://borrisholt.dk/Delphi/MemoDemo.zip
或者您当然可以使用自己的 3mb 文本文件。
有什么办法可以解决吗?还是 FMX 就是这样?
Memo1.ControlType:=Platform;
如果你这样做,你可以在 vcl 中获得性能。
我在写一个 Firemonkey 应用程序时 运行 遇到了一个问题:TMemo 慢得令人痛苦。加载一个 3 mb 的文件需要 12+ 秒,VCL TMemo 只需要 400 ms
这是我的测试代码:
uses
System.Threading, System.Diagnostics;
procedure TForm1.FormCreate(Sender: TObject);
begin
TTask.Run(
procedure
begin
Sleep(100);
var stopwatch := TStopwatch.Create;
TThread.Synchronize(nil,
procedure
begin
stopwatch.Start;
Memo1.Lines.LoadFromFile('../../../DemoData.json');
end);
TThread.Synchronize(nil,
procedure
begin
stopwatch.Stop;
Caption := stopwatch.ElapsedMilliseconds.ToString;
end)
end);
end;
整个测试项目(包括 JSON 文件)可以在这里找到: https://borrisholt.dk/Delphi/MemoDemo.zip
或者您当然可以使用自己的 3mb 文本文件。
有什么办法可以解决吗?还是 FMX 就是这样?
Memo1.ControlType:=Platform;
如果你这样做,你可以在 vcl 中获得性能。