Skip to content

Instantly share code, notes, and snippets.

@dkounal
Created March 5, 2023 10:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dkounal/b14ce68742ed83d7dd2c03ffbcb60a53 to your computer and use it in GitHub Desktop.
Save dkounal/b14ce68742ed83d7dd2c03ffbcb60a53 to your computer and use it in GitHub Desktop.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,
mormot.core.base;
type
TForm1 = class(TForm)
Button1: TButton; Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
so:string; sso:rawutf8;
// procedure Latstrconv;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses mormot.core.unicode, system.Diagnostics;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var n,i:integer; s:string; ss:rawutf8; tp:TStopwatch;
begin i:=High(integer) div 50;
so:='Μια ωραία πεταλούδα'; sso:='Μια ωραία πεταλούδα';
Memo1.Lines.Add('Using string with Greek Characters');
s:=''; tp:=TStopwatch.Startnew; for n :=0 to i do s:=string(sso); tp.Stop;
memo1.Lines.add('string conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
ss:=''; tp:=TStopwatch.Startnew; for n :=0 to i do ss:=rawutf8(so); tp.Stop;
memo1.Lines.add('rawutf8 conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
s:=''; tp:=TStopwatch.Startnew; for n :=0 to i do s:=utf8tostring(sso); tp.Stop;
memo1.Lines.add('mormot utf8tostring conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
ss:=''; tp:=TStopwatch.Startnew; for n :=0 to i do ss:=stringtoutf8(so); tp.Stop;
memo1.Lines.add('mormot stringtoutf8 conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
s:=''; tp:=TStopwatch.Startnew; for n :=0 to i do s:=system.Utf8ToString(sso); tp.Stop;
memo1.Lines.add('RTL Utf8ToString conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
ss:=''; tp:=TStopwatch.Startnew; for n :=0 to i do ss:=UTF8Encode(so); tp.Stop;
memo1.Lines.add('UTF8Encode conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
Memo1.Lines.Add('Finished with Greek Characters'); Memo1.Lines.Add('');
so:='A beautiful daytime'; sso:='A beautiful daytime';
Memo1.Lines.Add('Using string with Latin Characters');
s:=''; tp:=TStopwatch.Startnew; for n :=0 to i do s:=string(sso); tp.Stop;
memo1.Lines.add('string conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
ss:=''; tp:=TStopwatch.Startnew; for n :=0 to i do ss:=rawutf8(so); tp.Stop;
memo1.Lines.add('rawutf8 conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
s:=''; tp:=TStopwatch.Startnew; for n :=0 to i do s:=utf8tostring(sso); tp.Stop;
memo1.Lines.add('mormot utf8tostring conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
ss:=''; tp:=TStopwatch.Startnew; for n :=0 to i do ss:=stringtoutf8(so); tp.Stop;
memo1.Lines.add('mormot stringtoutf8 conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
s:=''; tp:=TStopwatch.Startnew; for n :=0 to i do s:=system.Utf8ToString(sso); tp.Stop;
memo1.Lines.add('RTL Utf8ToString conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
ss:=''; tp:=TStopwatch.Startnew; for n :=0 to i do ss:=UTF8Encode(so); tp.Stop;
memo1.Lines.add('UTF8Encode conversion: '+inttostr(tp.ElapsedMilliseconds));
application.ProcessMessages;
Memo1.Lines.Add('Finished with Latin Characters'); Memo1.Lines.Add('');
end;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment