Question

Je construis un produit "Application Virtualization". J'utilise le fichier XML comme registre virtuel. Les applications virtuelles générées à partir de mon logiciel accèdent au registre virtuel XML. Il fonctionne, mais fonctionne très lentement.

Je charge et décharge le XML sur chaque appel API de registre, car plusieurs processus enlevés à partir du parent accèdent à un même fichier de registre. Cela peut entraîner le lendemain de l'application.

Quelqu'un peut-il me faire savoir l'alternative pour XML ...

Était-ce utile?

La solution 3

Son texte à la transformation des arbres. Je l'ai géré dans mon code en chargeant et en analysant le XML dans tous les processus, seulement après une écriture qui s'est produite dans l'un des processus.

Autres conseils

Vous pouvez utiliser une base de données à la place. Ce serait plus rapide. Sqlite est léger et puissant.

Si vous le chargez dans la mémoire et le fonctionnez à partir de là, votre problème n'est pas XML. Préposez votre application pour savoir où il passe la plupart de son temps. Je pense que vous trouverez probablement qu'il passe la plupart de son temps à rechercher l'élément auquel vous souhaitez accéder.

Eh bien, vous pouvez bien sûr toujours utiliser le vrai registre, qui est en filetage et rapide ...

Sinon, vous devez créer un processus distinct qui gère votre registre XML virtuel, en gardant la structure XML en mémoire afin qu'il n'ait pas à le lire / l'écrire tout le temps. Ensuite, les processus qui doivent y accéder peuvent utiliser IPC pour communiquer avec le processus de registre.

Une autre idée, si les processus multiples ne sont pas susceptibles de mettre à jour le registre tout le temps: gardez votre registre XML virtuel en mémoire et écrivez-le sur disque lorsqu'il est modifié, mais de manière asynchrone via un thread d'arrière-plan. Lorsque vous accédez au registre, vérifiez d'abord si le fichier a été modifié; Sinon, vous n'avez pas besoin de le recharger.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top