111secondes pour multiplier 2^21701-1 par lui m=EAme...
Ce qui me fait deux nombres de 4094 chiffres en entr=E9e et un nombre de
8188 chiffres en sortie...
Seulement voila, le script que j'ai =E9cris (en perl, baaaaa) pour
bidouiller de mani=E8re p=E9dagogique sur les multiplications de grands
nombres me bouffe + de 500 Mo de ram pour faire l'op=E9ration.
Quand bien m=EAme j'aurais un peu fait ca a l'arrache (n'en doutez pas),
ca me parait tout de m=EAme beaucoup.
Du coup, les questions que je me/vous pose sont les suivantes :
1. Ca devrait se limiter =E0 quel ordre de grandeur normalement ?
2. Est-il possible de construire un algo qui travailler dans un espace
m=E9moire de taille finie ?
Me rendant bien compte que ma précédente version était pourrie, j'ai repris ca aujourd'hui.... et ca va beaucoup mieux ! Multiplication de deux nombres de 1774 chiffres (du random) en 2.8 secondes et moi de 4Mo de mémoire.
bon, c'est pas encore ca... je fais en 27 secondes ce que bc fait en 0.034s...... meme si on compare du perl a de l'assembleur, j'imagine que les algos implemetes par bc doivent etre beaucoup plus performant et tirer partie des capacites 32bits des machines.. (genre karatsuba)
c'est dans les vieux pots que l'on fait la bonne confiture
en gros fais un décalage à gauche de la représentation en base 2 ce qui revient à multiplier par deux
a+ remy
et quand A ou B est sup. a 2^32, tu fais comment pour les faire rentrer dans la mémoire ?
en c à partir de rien j'en sais rien, une liste chaînée ou un malloc par exemple je ne suis pas très au point avec le C il vaut mieux écouter les autres
sinon
http://gmplib.org/ mais tout est déjà fait dedans
remy
Julien Vehent a écrit :
On 13 oct, 09:17, remy <r...@fctpas.fr;> wrote:
Julien Vehent a écrit :
On 10 oct, 13:27, Julien Vehent <julien.veh...@gmail.com> wrote:
Me rendant bien compte que ma précédente version était pourrie, j'ai
repris ca aujourd'hui.... et ca va beaucoup mieux !
Multiplication de deux nombres de 1774 chiffres (du random) en 2.8
secondes et moi de 4Mo de mémoire.
bon, c'est pas encore ca... je fais en 27 secondes ce que bc fait en
0.034s......
meme si on compare du perl a de l'assembleur, j'imagine que les algos
implemetes par bc doivent etre beaucoup plus performant et tirer
partie des capacites 32bits des machines.. (genre karatsuba)
c'est dans les vieux pots que l'on fait la bonne confiture
en gros fais un décalage à gauche de la représentation en base 2
ce qui revient à multiplier par deux
a+ remy
et quand A ou B est sup. a 2^32, tu fais comment pour les faire
rentrer dans la mémoire ?
en c à partir de rien j'en sais rien, une liste chaînée ou un malloc
par exemple
je ne suis pas très au point avec le C il vaut mieux écouter les autres
Me rendant bien compte que ma précédente version était pourrie, j'ai repris ca aujourd'hui.... et ca va beaucoup mieux ! Multiplication de deux nombres de 1774 chiffres (du random) en 2.8 secondes et moi de 4Mo de mémoire.
bon, c'est pas encore ca... je fais en 27 secondes ce que bc fait en 0.034s...... meme si on compare du perl a de l'assembleur, j'imagine que les algos implemetes par bc doivent etre beaucoup plus performant et tirer partie des capacites 32bits des machines.. (genre karatsuba)
c'est dans les vieux pots que l'on fait la bonne confiture
en gros fais un décalage à gauche de la représentation en base 2 ce qui revient à multiplier par deux
a+ remy
et quand A ou B est sup. a 2^32, tu fais comment pour les faire rentrer dans la mémoire ?
en c à partir de rien j'en sais rien, une liste chaînée ou un malloc par exemple je ne suis pas très au point avec le C il vaut mieux écouter les autres