Frage

Ich baue ein Produkt "Anwendungsvirtualisierung".Ich verwende XML-Datei als virtuelles Registry. Virtuelle Anwendungen, die aus meiner Software generiert werden, greift auf den virtuellen Registrierungs-XML zu. Es läuft, läuft jedoch sehr langsam.

Ich lade und entladen Sie den XML an jedem Registrierungs-API-Anrufe, da ein Multiple-Prozess von dem übergeordneten Zugriff auf dieselbe Registrierungsdatei zugeordnet ist.Dies kann dazu führen, dass die Anwendung langsam ausgeführt wird.

Kann jemand die Alternative für XML wissen lassen ...

War es hilfreich?

Lösung 3

Sein Text zur Tree-Transformationszeit. Ich habe dies in meinem Code geleitet, indem ich den XML in allen Prozessen laden und analysiert, erst nachdem ein Schreiben in einem der Prozess aufgetreten ist.

Andere Tipps

Sie können stattdessen eine Datenbank verwenden.Es wäre schneller.SQLite ist leicht und leistungsstark.

Wenn Sie es in den Speicher laden und von dort aus arbeiten, ist Ihr Problem nicht XML. Profilieren Sie Ihre Bewerbung, um herauszufinden, wo es den größten Teil davon ausgibt. Ich denke, Sie werden wahrscheinlich herausfinden, dass es den größten Teil davon ausgibt, dass es Zeit ist, nach dem von Ihnen gewünschten Artikel zu suchen.

Nun, Sie könnten natürlich immer die eigentliche Registrierung verwenden, die Thread-Safe und Fast ...

Andernfalls müssen Sie einen separaten Prozess erstellen, der Ihre virtuelle XML-Registrierung verwaltet, um die XML-Struktur in der Erinnerung aufrechtzuerhalten, sodass sie nicht mehr lesen / schreiben muss.Dann können die Prozesse, die darauf zugreifen müssen, iPc verwenden, um mit dem Registrierungsvorgang kommunizieren zu können.

Eine andere Idee, wenn die mehreren Prozesse die Registrierung nicht die ganze Zeit aktualisieren dürfen: Bewahren Sie Ihre virtuelle XML-Registrierung im Speicher auf und schreibt es in die Festplatte, wenn sie jedoch geändert wird, aber asynchron über einen Hintergrundfaden.Prüfen Sie beim Zugriff auf die Registrierung zunächst, ob die Datei geändert wurde.Wenn nicht, müssen Sie es nicht neu laden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top