FACTORISATION ET TEST DE PRIMALITÉ 32 BITS ULTRA OPTIMISÉ
John Dogget
Messages postés384Date d'inscriptionvendredi 18 juin 2004StatutMembreDernière intervention 7 mai 2009
-
13 juil. 2010 à 18:17
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 2016
-
17 juil. 2010 à 01:33
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 17 juil. 2010 à 01:33
J'ai pris cette source de Barbichette, et il avait dit qu'il était inutile d'essayer d'optimiser le Result * 2 + 1 car le compilateur le faisait automatiquement ^^
Mais merci quand même. Remarque que cette fonction n'est pas cruciale, elle sert juste à précalculer les nombres premiers jusqu'à 65521.
Cordialement, Bacterius !
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 16 juil. 2010 à 21:04
Bonsoir
J'ai pas testé ton application, juste regardé brievement le code, mais vu que l'on parle d'optimisation, ne serait-il pas plus rapide de changer la fonction root comme suit :
function Root(N: Longword): Longword;
var
Temp : LongWord ;
begin
Result := 1;
Temp := 3;
while ( N > Temp ) do
begin
Dec(N, Temp);
Inc(Result);
Inc(Temp,2);
end;
Inc(Result);
end;
Ceci afin d'éviter la répétition du calcul Result*2 + 1.
N.B. La fonction proposée, si ça se trouve, est elle aussi améliorable ;)
Cordialement.
Bacterius
Messages postés3792Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention 3 juin 201610 14 juil. 2010 à 01:56
Dans un fichier ressource ? Si, ça serait possible, mais je pense que la vitesse resterait la même, car on serait obligé de copier la liste depuis le fichier ressource dans un tableau d'entiers, donc on gagnerait probablement un peu de performance au niveau des précalculs mais ça serait kif-kif au niveau des fonctions intéressantes elles-mêmes.
Mais je vais essayer pour voir ...
Cordialement, Bacterius !
John Dogget
Messages postés384Date d'inscriptionvendredi 18 juin 2004StatutMembreDernière intervention 7 mai 2009 13 juil. 2010 à 18:17
J'aime bien ce genre d'optimisations ^^
Au niveau rapidité, c'est pas mieux d'inclure la megaliste de premier dans un fichier ressource ?
17 juil. 2010 à 01:33
Mais merci quand même. Remarque que cette fonction n'est pas cruciale, elle sert juste à précalculer les nombres premiers jusqu'à 65521.
Cordialement, Bacterius !
16 juil. 2010 à 21:04
J'ai pas testé ton application, juste regardé brievement le code, mais vu que l'on parle d'optimisation, ne serait-il pas plus rapide de changer la fonction root comme suit :
function Root(N: Longword): Longword;
var
Temp : LongWord ;
begin
Result := 1;
Temp := 3;
while ( N > Temp ) do
begin
Dec(N, Temp);
Inc(Result);
Inc(Temp,2);
end;
Inc(Result);
end;
Ceci afin d'éviter la répétition du calcul Result*2 + 1.
N.B. La fonction proposée, si ça se trouve, est elle aussi améliorable ;)
Cordialement.
14 juil. 2010 à 01:56
Mais je vais essayer pour voir ...
Cordialement, Bacterius !
13 juil. 2010 à 18:17
Au niveau rapidité, c'est pas mieux d'inclure la megaliste de premier dans un fichier ressource ?