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 中获得性能。