Poser votre question
0

Macro Basic très très lente

posée 2019-08-02 18:22:41 +0200

Image Gravatar de bob78

Bonjour,

J'ai juste fait une boucle FOR dans une macro avec un calcul de sinus pour faire un test de vitesse. Excel me termine la boucle en 0.8s, Calc le fait en 50s !!!

Calc est-il si mauvais ou ai-je loupé un réglage ?

Merci d'avance.

éditer requalifier signaler fermer fusionner supprimer

1Réponse

0

répondue 2019-09-03 11:45:46 +0200

Image Gravatar de MiPaquet

updated 2019-09-08 19:32:57 +0200

Sans la source de la macro comment peut-on donner un commentaire?

En annexe tu trouveras un fichier dans lequel je calcule les fonction SIN et COS par série de Taylor. Il y a deux versions:

  • La première qui ne tient pas compte des quadrants
  • La seconde (SIN_SEC2) qui ramène le calcul au premier quadrant

On peut constater que pour avoir un résultat aves 13 chiffres significatifs identiques à ceux calculés par le fonction de Calc il faut :

  • Minimum 18 itérations si on ne tient pas compte des quadrants
  • 9 itérations si on en tient compte (ce qui diminue sérieusement le nombre de calculs nécessaires)

Tu pourrais traduire ce fichier sous Excel VBA (je ne le possède plus) et regarder combien il en faut pour avoir 13 chiffres significatifs identiques....

Sous Clac je ne sais pas quel langage a été utilisé pour rédiger le pgm (C++ je suppose) mais le nombre de chiffre significatifs des cellules est de 17 (sous Excel c'est 15)

LOBasic travaille avec des "DOUBLES" de 17 chiffres significatifs

VBA trailles avec des doubles de 18 chiffres significatifs

Tu vois que ce n'est pas comparable.

Mais conclure que Calc est nul parce qu'il met plus de temps pour réaliser une boucle qui tourne dans l'API LOB (et pas dans CALC) qui calcule 10e6 (10 millions) de fois SIN tient plus de la mauvaise fois que du comparatif réaliste.

Qui devra réaliser ce type de calcul????

Qui devrait payer Microsoft Office pour bénéficier de cette différence hypothétique de "performance"?

BAT

C:\fakepath\Test-Sin.ods

éditer signaler supprimer permalien plus

Commentaires

Oui c'est vrai, c'était clair pour moi mais ça manque de détails...

Voici le code minimaliste de la macro excel:

For i = 0 To 10000000

j = Sin(i * 3.14159 / 1000000)

Next

Image Gravatar de bob78bob78 ( 2019-09-05 11:10:03 +0200 )éditer
S'identifier/S'inscrire pour répondre

Outils de question

2 suiveurs

Stats

Posée: 2019-08-02 18:22:41 +0200

Consultée: 40 fois

Mise à jour: Sep 08