EN OUVERTURE DU LOGICIEL Par facilité ou par ignorance on place la fonction HCréationSiInexistant au début des applications pour s'assurer que tous les fichiers soient crées. Cette fonction est super pratique... pour les petites bases de données, mais pour les bases un peut plus conséquentes l'ouverture initiale des fichiers fait partie des opérations les plus coûteuses en temps. Il y a une solution : HCréationSiInexistant("*", hOuvertureDifférée) Tous les fichiers restent créés automatiquement, mais pour les fichiers existants, l'ouverture ne sera pas faite immédiatement. Elle sera différée à la première utilisation effective du fichier. Seuls les fichiers réellement utilisés seront ouverts. ACCÈS A LA BASE DE DONNÉES Toujours privilégier un accès aux données au travers du moteur Hyper File Client/Serveur, cela permet de reporter le travail du poste client vers le serveur et donc de gagner en performances. Les procédures stockées , utilisable en client/serveur , peuvent offrir également des gains de temps. Concrètement, un long traitement de recalcul de TVA pourra être fait en "différé" de l'application... ANALYSEZ RÉGULIÈREMENT LES PERFORMANCES windev propose l'analyseur de performance, n’hésitez pas en vous en servir, il m'a apporté beaucoup de renseignements utiles pour améliorer mon code. AJOUT DE NOMBREUX ENREGISTREMENTS D'UN COUP Par exemple lors de l'import de données, privilégiez la fonction HECRIT au lieu de HAJOUTE Elle permettra d'insérer les données à importer, sans aucune mise à jour des index. Cela permet un gain de temps, très significatif dans le cas d'un fichier ayant de nombreux index. Une fois toutes les écritures enregistrées, lancez une réindexation des données avec la fonction HREINDEXE (voir un autre de mes posts pour l'utilisation de cette fonction)
Personnellement je n'utilise la commande HCréationSiInexistant("*") que si la version de l'exe change ou forcé par le compte MANAGER parce que elle est très coûteuse de temps. Même la fonction HCréationSiInexistant("*", hOuvertureDifférée) prend aussi un peu de temps.
be careful with this procedure, because if the program is run in multi user, the process can produce wrong, if there are users who access data using index data, while data has not been indexed ...