Page 2 sur 4

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 11:13
par jchd
Bon, je me tempère quand même : le moteur peut être un autre SGBDR type MySQL et l'interface du web ; c'est ce qu'utilisent nombre de programmes de généalogie.

Cependant SQLite reste considérablement plus facile à mettre en oeuvre et permettra un export vers tout SGBDR avec peu d'efforts si le besoin s'en fait sentir.

Je ne suis pas si sectaire qu'on pourrait le croire !

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 11:59
par mikell
Pour l'erreur
C:\Program Files (x86)\AutoIt3\Include\SQLite.au3(2,13) : ERROR: missing separator character after keyword.
#IgnoreFunc __SQLite_Inline_Version
~~~~~~~~~~~~^
Tu as bien commenté la ligne du fichier qui est dans l'include ?
Sinon essaie d'installer la plus récente version d'autoit

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 13:01
par aulus
@jchd : Si SQLIite fait l'affaire, je n'irai pas voir ailleurs !

@Mikell :

J'utilise AutoIt 3.3.8.1
Je me rends compte que si je lance genea.au3 via "exécuter" de SCiTe, j'obtiens l'erreur.

Si je le lance directement via AutoIt3, je n'obtiens plus l'erreur, mais... le tableau est vide !

Je précise :
- j'ai installé SQLite.dll.au3 et SQLite.au3 dans le dossier Include.
- J'ai installé genea.au3 et genea.sqlite dans le dossier de mes programmes, différent du précédent.

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 14:56
par mikell
C'est le pire des cas, quand ça marche chez moi mais pas chez toi :mrgreen:
Essaie ce script
► Afficher le texte
en mettant bien à côté le dernier fichier texte que tu m'as envoyé que tu renommes en "genea.txt"

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 17:45
par aulus
Voici le compte-rendu d'expérience :

- j'ai placé mon fichier texte dans le même dossier que le nouveau genea.au3 que vous me proposez
- je l'ai renommé "genea.txt"
- le programme genea.au3 fonctionne sans erreur aussi bien dans SCITe que directement avec AutoIt.exe.

Mais...

- le SplashText "Création de la base" s'affiche
- le SplashText "Chargement" ne s'affiche pas
- le tableau s'affiche vide
- le fichier "genea1.sqlite" sensé être créé par le programme n'apparaît pas dans le dossier.

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 18:06
par mikell
J'ai un doute, tu peux tester ce script ?
► Afficher le texte

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 18:11
par aulus
J'obtiens l'erreur :
SQLite3.dll can't be Loaded

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 18:13
par mikell
OK, vérifie que tu as bien sqlite3.dll dans le systemdir

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 18:22
par aulus
Qu'appelez-vous le systemdir ?

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 18:25
par mikell
Le @systemdir d'autoit, sur mon XP c'est C:\windows\system32 , là où kya toutes les dll "sensibles" :mrgreen:

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 18:31
par aulus
Non, pas de sqlite3.dll dans le system32

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 19:05
par aulus
Voilà, tout est en ordre... ça marche !

Alors, la construction de la table est très longue.
L'affichage de la table une fois celle-ci créée prend 3 à 4 secondes.
Le tri sur une colonne prend 10 secondes.

C'est sûr que ça va plus vite que la lecture et le tri d'un fichier texte. Il me faudra plancher là-dessus. Je vais étudier avec soin votre code pour bien le comprendre.

Grand grand grand merci !

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 19:26
par mikell
Dernière version (plus complète)
ça aura fait un bon exercice :mrgreen:
► Afficher le texte

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 19:55
par aulus
Pas de changements dans les temps de chargement et d'affichage.
J'ai découvert et bien apprécié la possibilité d'ouvrir une fiche en double-cliquant sur une ligne de la liste.
Tout ça me plaît bien.
Vous avez mérité un bon week-end reposant !

Re: [R] Conseils pour accélérer affichage ListView

Posté : sam. 08 juin 2013 20:51
par mikell
Et dis-toi qu'on n'a fait que survoler les possibilités...
Le temps d'affichage c'est à cause de la listview, on peut pas le faire plus vite
Si tu mets un timer sur juste le tri de la bdd tu verras que le temps de traitement est < 1 sec

Pas génial ce w-e, là il pleut bien c'est en partie pour ça que tu as eu le script si vite :mrgreen:
Bon WE quand même !

Re: [R] Conseils pour accélérer affichage ListView

Posté : dim. 09 juin 2013 10:35
par jchd
Loin de moi l'idée de critiquer le boulot qu'a promptement réalisé Mikell. Que ça soit clair, il mérite un coup de chapeau.

Ceci dit je n'ai pas pu m'empêcher de laisser traîner un oeil et il m'est venu quelques remarques que je crois importantes sur la partie bdd.

Je ne me lance pas dans un trop long discours, j'ai mis mes conseils en commentaires dans le script, où je n'ai rien changé.
► Afficher le texte
Ah oui, il est bon de travailler avec le handle de la connexion à la bdd, plutôt qu'avec -1. Pourquoi ? Parce que si un jour on a besoin de travailler en parallèle avec une autre base (ou plusieurs), par exemple faire des bidouilles super rapides avec une bdd en mémoire (ou plusieurs), on risquera de se mélanger les crayons avec les handles et les -1. Ce moment peut arriver plus vite qu'on ne croit !

Morale : récupérer les handles à chaque _SQLite_Open et les utiliser explicitement.

Il faudrait certainement créer à terme un ou plusieurs index sur les colonnes les plus courament utilisées pour les tris. par contre, ce ne sera à faire que lorsque le schéma sera apuré et stabilisé et seulement si l'expérience en démontre l'utilité. Sinon on obtiendra l'inverse de l'effet escompté : un ralentissement global (ou "comment se tirer dans le pied").

Je ne suis pas généalogiste, mais je me demande comment on peut éviter de grossières erreurs sans mettre en place un moyen fiable de gérer les contemporains homonymes. Ce schéma demande réflexion.

Re: [R] Conseils pour accélérer affichage ListView

Posté : dim. 09 juin 2013 11:15
par aulus
Oui,j'admire le travail de Mikell et la rapidité avec laquelle il code. Et je lui suis très reconnaissant de sa disponibilité.

Jchd, je vous remercie de l'attention que vous portez à la question posée. Vos conseils, que je ne comprends pas encore, me seront d'une grande utilité quand je maîtriserai un peu SQLite, si jamais je le maîtrise un jour ! :D

Re: [R] Conseils pour accélérer affichage ListView

Posté : dim. 09 juin 2013 15:10
par mikell
Bon voilà le même avec quelques modifications selon les instructions de jchd
Au niveau de la vitesse d'affichage l'amélioration est plus que sensible, ya pas photo
En plus la nouvelle bdd fait 40 Ko de moins ^^
► Afficher le texte
Ce qui m'agace un peu c'est que "SELECT id || '|' || date ... " est très efficace mais pas moyen de trouver une explication de cette syntaxe dans la doc habituelle trouvé. "||" = "concatenate"
Sinon pour définir les types de données je sais pas ce qui doit figurer dans la plupart des colonnes
Et mettre des ids aux parents dépend des fonctionnalités souhaitées du script, sans compter qu'il faut apprendre d'abord à utiliser des FK :mrgreen:

NB : il pleut de plus en plus ^^

Re: [R] Conseils pour accélérer affichage ListView

Posté : dim. 09 juin 2013 17:16
par aulus
Oui, l'affichage est plus rapide... jusqu'où ira le progrès ? :D

Me mettre à SQLite me semble inévitable... Et tout récrire mon programme aussi... Moi qui croyais toucher au but tout prochainement... :(

Merci Mikell pour le travail et jchd pour les bonnes infos... et vive le mauvais temps !

Re: [R] Conseils pour accélérer affichage ListView

Posté : dim. 09 juin 2013 17:25
par mikell
... comme dirait Brassens :mrgreen: