• [^] # Re: FAST pool allocator

    Posté par . En réponse au message operator new + boost::fast_pool_allocator. Évalué à 3.

    Merci pour ta réponse.

    En fait d'après la doc de boost, la différence entre fast_pool_allocator et pool_allocator est que le fast est sensé être à privilégier pour les allocations d'objets uniques (new Foo()) et le pool_allocator pour les allocations de plusieurs objets contiguës (new Foo[]). Ils expriment cela avec pool_allocator pour des std::vector et fast_pool_allocator pour des std::list.

    C'est une bonne idée de regarder les différences entre les adresses des pointeurs retournés.
    Je viens de tester et en effet, la taille de bloc par défaut initial étant 32.
    J'observe que le bloc créé suivant faire 64, puis le suivant 128, puis 256 …

    Ça semble donc être l'algo du fast_pool_allocator qui réagit comme ça. Je vais fouiller un peu dans les paramêtres du template pour voir si on ne peut pas modifier ce comportement.
    Sinon il ne me reste plus qu'a tester d'autres allocateurs, ou à en coder un qui réagit comme je le souhaite, c'est à dire créer un nouveau bloc quand c'est nécessaire mais toujours de la même taille.