J'ai besoin de votre idead pour améliorer notre implémentation.améliorer magasin de données temporaire
nous avons environ 10MB
données doivent être traitées dans notre application pour each analysis
. ces données sont transférées d'une autre application paquet par paquet. il y a environ 24000 pakcets
pour each analysis
parce que les données sont créées paquet par paquet dans cette application et nous sont envoyées immédiatement.
notre implémentation actuelle est comme ce qui suit:
communication module
reçoit des données et met les données dans un objet (une instance d'une classe de données) lorsqu'un paquet est reçu. Ensuite, il va fire an event
qui sera contain that data object
.
data process module
reçoit l'événement et place l'objet de données reçu dans un arraylist
.
Après avoir reçu toutes les données pour une analyse, data process module
démarrera le processus de données pour analyser les données. À la fin, les données seront stockées dans la base de données et ces objets de données seront nettoyés pour l'analyse suivante. Le temps entre each analysis
est supérieur à 10 minutes.
J'ai supprimé l'opération de clonage ou de copie pendant le processus de transfert de données interne. Donc, je pense que nous sommes en train de passer des références. droite? J'ai également créé un pool pour ces événements et objets de données. donc ces événements et objets de données seront réutilisés encore et encore.
Une autre suggestion est de créer un shared reusable memory space
(partage interne, entre modules) pour ces données d'analyse et de transmettre sa référence autour de l'événement. J'aime mieux cette idée mais plus de changement de code de ma part. Ce que j'ai fait maintenant est presque le même en termes d'utilisation de la mémoire. ai-je raison?
Quelle est votre opinion? d'autres meilleures idées? pour la solution shared reusable memory space
, quelle est la bonne façon de l'implémenter?
grâce,
Avez-vous fait le profil de l'application? Où étaient les goulots d'étranglement? – Oded
Quelle version de .NET? Combien de threads utilisez-vous ici? –