ABSTRACT Nuvarande allmänna minne allocators ger inte tillräcklig hastighet eller flexibilitet för modem högpresterande applikationer. Högjusterade allmänna ändamål allokatorer har per-operation kostnader runt hundra cykler, medan kostnaden för en operation i en anpassad minne allocator kan vara bara en handfull cykler. För att uppnå hög prestanda skriver programmerare ofta anpassade minnesallokatorer från grunden - en svår och felbenägen process. I detta dokument presenterar vi en flexibel och effektiv infrastruktur för att bygga minnesallokatorer som bygger på C++-mallar och arv. Detta nya tillvägagångssätt gör det möjligt för programmerare att bygga anpassade och allmänna allokatorer som "höga lager" som kan komponeras utan att ådra sig några extra omkostnader eller extra programmeringskostnader. Vi visar att denna infrastruktur förenklar allokatorkonstruktionen och resulterar i allokatorer som antingen matchar eller förbättrar prestandan hos kraftigt inställda allokatorer skrivna i C, inklusive Kingsley-allokatorn och GNU obstaek-biblioteket. Vi visar vidare att denna infrastruktur kan användas för att snabbt bygga en generell allokator som har prestanda jämförbar med Lea allocator, en av de bästa enprocessor allocator tillgängliga. På så sätt demonstrerar vi ett rent, lättanvändt allokatorgränssnitt som sömlöst kombinerar kraften och effektiviteten hos ett antal allmänna och anpassade allokatorer inom en och samma applikation.
I REF beskrivs också en infrastruktur för att förbättra prestandan för förvaltare av allmänna ändamål.
Composing high-performance memory allocators
{'venue': "PLDI '01", 'journal': None, 'mag_field_of_study': ['Computer Science']}