Tu confonds un peu tout, utilisation mémoire (RAM) et taille de l'index. Dans le document, la conclusion est que Mono et Java bouffe plus de mémoire que les autres (ce qui a des explications bien sûr), mais par contre ils ont des fichiers d'index plus petits.
Si Beagle est JIndex prennent plus de mémoire c'est pour 2 raisons (page 12) :
- Ils utilisent beaucoup moins de processeur que les autres : visiblement ils favorisent l'utilisation mémoire et donc probablement le cache plutôt que de faire faire beaucoup d'opération par le CPU.
- Intrinséquement Mono et Java gèrent eux même la mémoire, s'il y a de la mémoire dispo, ben le runtime l'utilise et ne la libère pas forcement dès qu'elle n'est plus utilisée : elle peut être recyclée (gain de temps à l'allocation) ou bien libéré en temps voulu (genre l'utilisation mémoire arrive à saturation).
Si c'est bien fait, un programme écrit en Mono Java peut se permettre d'utiliser un cache "automatique" basé sur le garbage collector (gestionnaire mémoire) : un objet est marqué comme "peut être recyclé" : la mémoire est utilisé (même si c'était pas nécessaire) comme un cache : gain de temps, moins de calcul CPU et/ou moins d'accès disque. Si un besoin mémoire se fait sentir à l'extérieur, le cache est "purgé", les objets sont donc nécessairement reconstruit lorsque le runtime tente d'y accéder, avec utilisation de CPU/Accès disque, mais moins de consommation mémoire (le cache est vidé).
Ce mécanisme n'est pas proposé "par défaut" en C/C++, c'est pourquoi les autres moteurs d'indexations font largement gaffe à l'utilisation mémoire, mais cela se traduit visiblement par une consommation CPU plus poussée, et sans doute une base de données plus grosses (qui contient probablement plus de tables d'index pour en fait reproduire la vitesse d'accès proposé par un cache mémoire).
[^] # Re: au moins un truc est clair
Posté par TImaniac (site web personnel) . En réponse au journal Etatde l'art des outils de recherches pour le bureau. Évalué à 6.
Si Beagle est JIndex prennent plus de mémoire c'est pour 2 raisons (page 12) :
- Ils utilisent beaucoup moins de processeur que les autres : visiblement ils favorisent l'utilisation mémoire et donc probablement le cache plutôt que de faire faire beaucoup d'opération par le CPU.
- Intrinséquement Mono et Java gèrent eux même la mémoire, s'il y a de la mémoire dispo, ben le runtime l'utilise et ne la libère pas forcement dès qu'elle n'est plus utilisée : elle peut être recyclée (gain de temps à l'allocation) ou bien libéré en temps voulu (genre l'utilisation mémoire arrive à saturation).
Si c'est bien fait, un programme écrit en Mono Java peut se permettre d'utiliser un cache "automatique" basé sur le garbage collector (gestionnaire mémoire) : un objet est marqué comme "peut être recyclé" : la mémoire est utilisé (même si c'était pas nécessaire) comme un cache : gain de temps, moins de calcul CPU et/ou moins d'accès disque. Si un besoin mémoire se fait sentir à l'extérieur, le cache est "purgé", les objets sont donc nécessairement reconstruit lorsque le runtime tente d'y accéder, avec utilisation de CPU/Accès disque, mais moins de consommation mémoire (le cache est vidé).
Ce mécanisme n'est pas proposé "par défaut" en C/C++, c'est pourquoi les autres moteurs d'indexations font largement gaffe à l'utilisation mémoire, mais cela se traduit visiblement par une consommation CPU plus poussée, et sans doute une base de données plus grosses (qui contient probablement plus de tables d'index pour en fait reproduire la vitesse d'accès proposé par un cache mémoire).
Arrêtez moi si je dis des conneries :)