Sam 30/11/2013 - Actualités

Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Sam 30/11/2013 - Actualités

Message non lu par Xavier »

Actualités


Entre deux sessions de corrections, la journée a été consacrée aux problèmes de performance :

Application - P3 - Il faut plus de 2 secondes pour charger ~2 Mo de données au démarrage.
  • Suite aux conseils de Pascal P., le chargement DOM utilise désormais du Firstchild et NextSibling au lieu de compter les nœuds et de boucler dessus. On est passé de 140 à 130 ms. Avec la lecture du fichier, le chargement prend 180 ms, ce qui semble finalement assez correct pour de l'XML.
  • Derrière il faut y rajouter les 820 ms d'extraction des icônes des Raccourcis, qu'il faudra un jour conserver en cache.
  • Le chargement prend donc 1 seconde, la seconde supplémentaire était dû à un bug qui déclenchait un enregistrement inutile.
Application - P3 - L'enregistrement automatique des données peut provoquer 1 seconde de lag en cours d'utilisation si le volume de données est conséquent (~ 2000 objets ~2 Mo).
  • Là encore le code a été analysé et ce pouvait être optimisé l'est. On est passé de 1260 à 1150 ms.
  • Ce temps est pratiquement à 100% dans le module NativeXML qui est pourtant réputé pour être rapide. Il ne sera pas modifié.
  • La bonne nouvelle c'est que l'enregistrement asynchrone (via Application.ProcessMessages) a été réactivé et qu'il fonctionne très bien !!! Les crashes qu'il y avait lors de sa première implémentation devant avoir été provoqué par autre chose. Le système de lock a été revu, il interdit les enregistrements concurrents en cas de clics frénétiques sur le bouton Save. Une petite séance de stress-tests a permis de valider la solidité de l'ensemble. L'enregistrement ne provoque plus de lag. :)
Agenda - P3 - L'ouverture de l'outil est longue quelque soit le volume de données à y afficher à cause des 19 pages incluses.
  • Comme imaginé depuis longtemps, un système basé sur du Create - Hide - Show a été mis en place pour l'Agenda au lieu des Create - Destroy - Create. La création se fait à la première utilisation et non systématiquement au démarrage de l'application.
  • Seul cet outil l'utilise, car la mise au point est un peu délicate. Par exemple il a fallu forcer la mise à jour d'une partie des composants en cas de purge totale des données ou d'import, ces opérations ne se faisant normalement qu'après fermeture de tous les outils ayant des données.
  • Mais le résultat est 100% conforme à ce qui était attendu : la première ouverture prend un peu de temps, les suivantes sont instantanées, y compris après réduction/restauration de la Barre.
Répondre