• [^] # Re: La memoire goulot d'etranglement

    Posté par . En réponse au journal Comment résoudre la "crise du logiciel" ?. Évalué à 2.

    Juste en passant...

    En Smalltalk les Array sont pas prévues pour être redimensionnées ; je suppose qu'elles sont implémentées à la C avec toutes les données bien contigues en mémoire. Par contre évidemment ça contient des références d'objets donc c'est intéressant seulement pour les objets immédiats comme les petits entiers ou les caractères. Peut-être qu'il y a d'autres astuces, je sais pas.

    On peut quand même redimensionner une Array, mais c'est fait violemment : on en alloue une autre, on copie le contenu, et on met à jour la référence. Vous avez bien lu, la référence change, c'est pas une double indirection. La représentation du tas est prévue pour être facilement parcourue/mise à jour et les objets peuvent bouger en mémoire. Ça permet en particulier au GC de défragmenter, et de garder une image compacte.

    Disclaimer : Prendre avec des pincettes ce que je rapporte ci-dessus, c'est ce que j'ai compris/intuité d'une courte exploration du langage, je sais pas si ça marche aussi bien que ça pourrait mais les idées sont intéressantes.