1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196
|
(* Flash-Pascal 2 v13.11.10 *)
program Comparaison;
(* Comparaison de la vitesse d'exécution de plusieurs fonctions renvoyant une
chaîne de caractères sans accents. *)
uses
Flash8, Date;
{$FRAME_WIDTH 320}
{$FRAME_HEIGHT 200}
{$BACKGROUND 0}
////////////////////////////////////////////////////////////////////////////////
function Time: integer; (* Heure en millisecondes *)
begin
with tDate.Create do
result :=
60 * 60 * 1000 * GetHours +
60 * 1000 * GetMinutes +
1000 * GetSeconds +
1 * GetMilliseconds;
end;
////////////////////////////////////////////////////////////////////////////////
const
AvecAccents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
SansAccents = 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn';
function EnleveAccents1(aChaine: string): string;
var
i, j: integer;
begin
result := '';
for i := 1 to Length(aChaine) do
begin
j := Pos(aChaine[i], AvecAccents);
if j > 0 then
result := result + SansAccents[j]
else
result := result + aChaine[i];
end;
end;
function EnleveAccents2(aChaine: string): string;
var
i, j: integer;
begin
result := aChaine;
for i := 1 to Length(aChaine) do
begin
j := Pos(aChaine[i], AvecAccents);
if j > 0 then
result[i] := SansAccents[j];
end;
end;
function EnleveAccents3(aChaine: string): string;
var
i: integer;
c: string;
begin
result := '';
for i := 1 to Length(aChaine) do
begin
c := aChaine[i];
case c of
"À", "Á", "Â", "Ã", "Ä", "Å": c := 'A';
"à", "á", "â", "ã", "ä", "å": c := 'a';
"Ò", "Ó", "Ô", "Õ", "Ö", "Ø": c := 'O';
"ò", "ó", "ô", "õ", "ö", "ø": c := 'o';
"È", "É", "Ê", "Ë": c := 'E';
"è", "é", "ê", "ë": c := 'e';
"Ç": c := 'C';
"ç": c := 'c';
"Ì", "Í", "Î", "Ï": c := 'I';
"ì", "í", "î", "ï": c := 'i';
"Ù", "Ú", "Û", "Ü": c := 'U';
"ù", "ú", "û", "ü": c := 'u';
"ÿ": c := 'y';
"Ñ": c := 'N';
"ñ": c := 'n';
end;
result := result + c;
end;
end;
function EnleveAccents4(aChaine: string): string;
var
i: integer;
c: string;
begin
result := aChaine;
for i := 1 to Length(aChaine) do
begin
c := aChaine[i];
case c of
"À", "Á", "Â", "Ã", "Ä", "Å": result[i] := 'A';
"à", "á", "â", "ã", "ä", "å": result[i] := 'a';
"Ò", "Ó", "Ô", "Õ", "Ö", "Ø": result[i] := 'O';
"ò", "ó", "ô", "õ", "ö", "ø": result[i] := 'o';
"È", "É", "Ê", "Ë": result[i] := 'E';
"è", "é", "ê", "ë": result[i] := 'e';
"Ç": result[i] := 'C';
"ç": result[i] := 'c';
"Ì", "Í", "Î", "Ï": result[i] := 'I';
"ì", "í", "î", "ï": result[i] := 'i';
"Ù", "Ú", "Û", "Ü": result[i] := 'U';
"ù", "ú", "û", "ü": result[i] := 'u';
"ÿ": result[i] := 'y';
"Ñ": result[i] := 'N';
"ñ": result[i] := 'n';
end;
end;
end;
////////////////////////////////////////////////////////////////////////////////
const
LARGEUR = 320;
HAUTEUR = 200;
VERSION = 'Compilateur FlashPascal 2 v13.11.10'#13;
TEXTE =
"La vraie perfection de l'entendement est de bien juger."#10 +
"Juger, c'est prononcer au dedans de soi sur le vrai et sur le faux ; et bien juger, c'est prononcer avec raison et connaissance."#10 +
"C'est une partie de bien juger que de douter quand il faut. Celui qui juge certain ce qui est certain, et douteux ce qui est douteux, est un bon juge."#10 +
"Par le bon jugement on se peut exempter de toute erreur. Car on évite l'erreur non seulement en embrassant la vérité quand elle est claire, mais encore en se retenant quand elle ne l'est pas."#10 +
"Ainsi la vraie règle de bien juger est de ne juger que quand on voit clair ; et le moyen de le faire est de juger après une grande considération."#10 +
"Considérer une chose, c'est arrêter son esprit à la regarder en elle-même, en peser toutes les raisons, toutes les difficultés et tous les inconvénients."#10 +
"C'est ce qui s'appelle attention. C'est elle qui rend les hommes graves, sérieux, prudents, capables de grandes affaires et de hautes spéculations."#10 +
"Être attentif à un objet, c'est l'envisager de tous côtés ; et celui qui ne le regarde que du côté qui le flatte, quelque long que soit le temps qu'il emploie à le considérer, n'est pas vraiment attentif."#10 +
"C'est autre chose d'être attaché à un objet, autre chose d'y être attentif. Y être attaché, c'est vouloir, à quelque prix que ce soit, lui donner ses pensées et ses désirs, ce qui fait qu'on ne le regarde que du côté agréable ; mais y être attentif, c'est vouloir le considérer pour en bien juger, et pour cela connaître le pour et le contre."#10 +
"Il y a une sorte d'attention après que la vérité est connue ; et c'est plutôt une attention d'amour et de complaisance que d'examen et de recherche."#10 +
"La cause de mal juger est l'inconsidération, qu'on appelle autrement précipitation."#10 +
"Précipiter son jugement, c'est croire ou juger avant que d'avoir connu."#10 +
"Cela nous arrive, ou par orgueil, ou par impatience, ou par prévention, qu'on appelle autrement préoccupation :"#10 +
"Par orgueil, parce que l'orgueil nous fait présumer que nous connaissons aisément les choses les plus difficiles, et presque sans examen : ainsi nous jugeons trop vite, et nous nous attachons à notre sens, sans vouloir jamais revenir, de peur d'être forcés à reconnaître que nous nous sommes trompés ;"#10 +
"Par impatience, lorsqu'étant las de considérer, nous jugeons avant que d'avoir tout vu ;"#10 +
"Par prévention en deux manières : ou par le dehors, ou par le dedans*:"#10 +
"Par le dehors, quand nous croyons trop facilement sur le rapport d'autrui, sans songer qu'il peut nous tromper, ou être trompé lui-même*;"#10 +
"Par le dedans, quand nous nous trouvons portés, sans raison, à croire une chose plutôt qu'une autre."#10 +
"Le plus grand déréglement de l'esprit, c'est de croire les choses parce qu'on veut qu'elles soient, et non parce qu'on a vu qu'elles sont en effet."#10 +
"C'est la faute où nos passions nous font tomber. Nous sommes portés à croire ce que nous désirons et ce que nous espérons, soit qu'il soit vrai, soit qu'il ne le soit pas."#10 +
"Quand nous craignons quelque chose, souvent nous ne voulons pas croire qu'elle arrive ; et souvent aussi, par faiblesse, nous croyons trop facilement qu'elle arrivera."#10 +
"Celui qui est en colère en croit toujours les causes justes, sans même vouloir les examiner ; et par là il est hors d'état de porter un jugement droit."#10 +
"Cette séduction des passions s'étend bien loin dans la vie, tant à cause que les objets qui se présentent sans cesse nous en causent toujours quelques unes, qu'à cause que notre humeur même nous attache naturellement à de certaines passions particulières, que nous trouverions partout dans notre conduite si nous savions nous observer."#10 +
"Et comme nous voulons toujours plier la raison à nos désirs, nous appelons raison ce qui est conforme à notre humeur naturelle, c'est-à-dire à une passion secrète qui se fait d'autant moins sentir qu'elle fait comme le fond de notre nature."#10 +
"C'est pour cela que nous avons dit que le plus grand mal des passions, c'est qu'elles nous empêchent de bien raisonner, et par conséquent de bien juger, parce que le bon jugement est l'effet du bon raisonnement.";
(* BOSSUET, Traité de la connaissance de Dieu et de soi-même. *)
var
t: textField;
f: textFormat;
o: string;
s: string;
t1, t2: integer;
begin
f := textFormat.Create('Tahoma', 16);
f.color := clWhite;
f.leftMargin := 5;
t := textField.Create(_root, 't', 0, 0, 0, LARGEUR, HAUTEUR);
t.SetNewTextFormat(f);
o := '';
t1 := Time;
s := EnleveAccents1(TEXTE);
t2 := Time;
o := o + 'Version 1 : ' + IntToStr(t2 - t1) + ' ms'#10;
t1 := Time;
s := EnleveAccents2(TEXTE);
t2 := Time;
o := o + 'Version 2 : ' + IntToStr(t2 - t1) + ' ms'#10;
t1 := Time;
s := EnleveAccents3(TEXTE);
t2 := Time;
o := o + 'Version 3 : ' + IntToStr(t2 - t1) + ' ms'#10;
t1 := Time;
s := EnleveAccents4(TEXTE);
t2 := Time;
o := o + 'Version 4 : ' + IntToStr(t2 - t1) + ' ms';
t.text := VERSION + o;
f.size := 12;
f.color := clLime;
t.SetTextFormat(0, Length(VERSION)-1, f);
end. |
Partager