2009-11-09 3 views
2

J'ai des objets que je sauvegarde dans le système de fichiers en utilisant la sérialisation. Lorsque je charge l'application, devrais-je charger tous les objets en mémoire ou simplement les talons (pour les capacités de recherche)?Que dois-je charger en mémoire lors du chargement de mon application?

Si je charge seulement des stubs, alors je les chargerais du système de fichiers quand ils sont nécessaires et les garderais en mémoire après cela pour un accès rapide.

L'ordre de grandeur est des centaines d'enregistrements et non des milliers.

De quelle façon recommanderiez-vous?

+0

Quelle est la taille de chaque enregistrement? –

Répondre

0

Si la taille et le nombre d'objets sont toujours trop petits, chargez-les au démarrage. Utilisez des talons/proxies autrement.

0

Cela dépend.

Si vous savez qu'il ne dépassera jamais des centaines, placez-les tous en mémoire.

S'il existe une faible probabilité de sous-estimer le total, utilisez des talons.

Cela dépend également de la taille des enregistrements et de leur fréquence de modification.

4

Chargez au besoin, et gardez en mémoire, ne gaspillez pas le temps de chargement des choses qui ne seront pas utilisées.

Vous pouvez même essayer de conserver un enregistrement de la plupart des éléments demandés et les charger au démarrage.

+0

+1. Être coincé en maintenant une application qui charge tout d'avance, je ne pouvais pas être plus d'accord. Il n'y a aucune raison de devoir ajouter du temps après la compilation avant de pouvoir réellement commencer l'exécution. Cela rend ces "solutions rapides" tout sauf rapides. –

+1

Rien de pire que d'attendre qu'une application charge des données "statiques" si elle n'est pas utilisée X-) –

0

Cela dépend vraiment de vos scénarios d'utilisation pour ces objets. Sont-ils tous utilisés fréquemment par l'application quand elle est en cours d'exécution? Sont-ils rarement utilisés? Certains sont-ils fréquemment utilisés alors que d'autres sont rarement utilisés?

De plus, quelle est la base de ressources attendue des systèmes sur lesquels votre application s'exécutera? Les objets que vous chargez sont-ils grands ou petits? Même s'il n'y en a que quelques centaines, s'ils sont tous de très gros objets, ce serait un facteur important. Si vous avez besoin d'une application à profil bas, le chargement à la demande semble plus logique.

Ce type de question est difficile à répondre sans en savoir plus sur l'utilisation prévue et l'environnement d'exécution de la ligne de base. C'est très subjectif.

0

Mémoire vs performances. Choisissez lequel est le plus important (ou plutôt, quelle est l'importance de chacun) et ajustez votre mise en cache des objets en conséquence.

Vous pouvez même utiliser le Enterprise Library Caching Block, ce qui pourrait accélérer votre implémentation.

Questions connexes