Re: [fr-users] Piètres performances en exécution macro Calc de LibreOffice

2012-02-04 Par sujet christianwtd

Le 04/02/2012 16:28, Jean Michel PIERRE a écrit :


Avec ma configuration LibO 3.5 RC2, la macro s'exécute en un peu plus 
de 38 sec

Le code est peut-être à revoir.
J.M


Raahhh !!!
Avec mon turbo : 0.577 s
Ce qui est bizarre est le temps qui change (peu) sur plusieurs tests (de 
0.577 s à

0.609 s).
LibO 3.5 RC2 - Win7 64b

Bon surf,
Christian

--
Visitez http://christianwtd.free.fr/ pour débuter avec Calc, de LibreOffice ou 
OpenOffice.org


--
Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous 
désinscrire
Les archives de la liste sont disponibles à 
http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne 
pourront pas être supprimés


Re: [fr-users] Piètres performances en exécution macro Calc de LibreOffice

2012-02-04 Par sujet lutch

Le 04/02/12 16:28,  Jean Michel PIERRE nous a écrit  :



Bonjour à tous,

En ouvrant ma messagerie ce matin, je suis tombé sur l'issue suivant :

https://bugs.freedesktop.org/show_bug.cgi?id=45607

et j'ai pu constater moi-même les piètres performances de l'exécution de
cette macro avec LibreOffice, quelque soit la version utilisée...la 
future

3.5, en outre, est une catastrophe, 3.5 fois plus lente que les versions
précédentes de LibO. Comme quoi, ma décision de continuer à garder OOo
3.2.1 se justifie de plus en plus...

Alex

Bonjour,
Avec ma configuration LibO 3.5 RC2, la macro s'exécute en un peu plus 
de 38 sec

Le code est peut-être à revoir.
J.M





--
Bonsoir,

Nom du modèle :MacBook Pro
Nom du processeur :Intel Core i7
Vitesse du processeur :2,66 GHz
Mémoire :8 Go
Mac OS 10.6.8

LibO LibreOffice 3.4.5
OOO340m1 (Build:502)

**exécution en 8,677s

C_Lucien

--
Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous 
désinscrire
Les archives de la liste sont disponibles à 
http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne 
pourront pas être supprimés


Re: [fr-users] Piètres performances en exécution macro Calc de LibreOffice

2012-02-04 Par sujet Jean Michel PIERRE




Avec ma configuration LibO 3.5 RC2, la macro s'exécute en un peu plus de 38 sec
Le code est peut-être à revoir.
J.M


Raahhh !!!
Avec mon turbo : 0.577 s


Bon, le PB est dans la fonction (Function show...)
si je l'ignore, c'est bien 0.577 s, sinon, cata : 43.633 s

Bon surf
Christian


Et moi, je tombe alors à 2 sec


--
Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous 
désinscrire
Les archives de la liste sont disponibles à 
http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne 
pourront pas être supprimés


Re: [fr-users] Piètres performances en exécution macro Calc de LibreOffice

2012-02-04 Par sujet lutch

Le 04/02/12 19:08, Michel Rudelle nous a écrit :

Bonsoir,


De : lutch [mailto:lu...@free.fr]
Envoyé : samedi 4 février 2012 18:52


[...]

Par curiosité, j'ai inséré la formule sans le signe =,
le temps d'exécution descend à 0,519s

Puis-je en déduire que Calc recalculant la formule à chaque insertion
par la macro, c'est ce qui ralentit le tout ?

Suspendre le recalcul en début de macro et le réactiver à la fin
apporterait un gain, mais est-ce bien là que réside le problème ?
Je ne sais pas -encore- faire ceci, mais ça viendra…

C_Lucien

Je l'ai déjà utilisé et ça m'a fait gagner beaucoup de temps dans une macro
travaillant sur un classeur avec un très grand nombre de calculs.

Pour inhiber le recalcul automatique:
Nom_du_Classeur.enableAutomaticCalculation(False)

Pour autoriser le recalcul automatique après avoir tout recalculé
Nom_du_Classeur.CalculateAll
Nom_du_Classeur.enableAutomaticCalculation(True)

Ceci à condition de ne pas avoir besoin de valeurs calculées entre temps ...

Bonne soirée,

Michel



en effet ! Merci.
Temps d'exécution 0,506s

À toutes fins utiles, voici la macro modifiée

Function show_number(ByVal nr As Integer,ByVal empty As Boolean) As String
show_number = 
If Not empty Then
show_number = Trim(Str(nr))+ .
End If
End Function
'
Sub test
Const END_ROW As Integer = 199

Dim document As Object
Dim dispatcher As Object

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService(com.sun.star.frame.DispatchHelper)

Dim oDoc As Object
Dim oSheet As Object
Dim oRange As Object
Dim oCell As Object

oDoc = ThisComponent
oSheet = oDoc.getCurrentController.ActiveSheet
oDoc.enableAutomaticCalculation(False)

' Select and clean the test cell range

oRange = oSheet.getCellRangeByPosition(0, 0, 1, END_ROW)
oDoc.CurrentController.select(oRange)

dispatcher.executeDispatch(document, .uno:ClearContents, , 0, Array())

Dim fun As String

fun = =show_number(ROW(); isblank(indirect(B  ROW(

Dim start_time As Long

start_time = GetSystemTicks()

' Fill the test cell range:
' column 1: formula for displaying the row number
' column 2: a constant string

Dim row As Integer

For row = 0 To END_ROW
oRange = oSheet.getCellRangeByPosition(0, row, 0, row)
oDoc.CurrentController.select(oRange)
oCell = oSheet.getCellByPosition(0, row)
oCell.setFormula(fun)
oCell = oSheet.getCellByPosition(1, row)
oCell.String = abc
Next row

oRange = oSheet.getCellRangeByPosition(0, 0, 0, 0)
oDoc.CurrentController.select(oRange)

oRange = oDoc.createInstance(com.sun.star.sheet.SheetCellRanges)
oDoc.CurrentController.select(oRange)

Print Test executed in  + (GetSystemTicks() - start_time)/1000 +  s
oDoc.enableAutomaticCalculation(true)
End Sub



J'ai appris quelque chose ce soir…
C_Lucien

--


--
Envoyez un mail à users+h...@fr.libreoffice.org pour savoir comment vous 
désinscrire
Les archives de la liste sont disponibles à 
http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne 
pourront pas être supprimés