Yamal - Yet Another Memory Allocation Library

Ein allgemeiner Allocator. Kann zum Beschleunigen in C++ Programmen genutzt werden. Kann bei Bedarf unter die Standardbibliothek gelegt werden.

Wie bekannt sein dürfte ist die Speicherverwaltung i.a. der langsamste Teil der von C++ und C genutzten Sprachelemente. Um dem ein wenig abzuhelfen wurde Yamal konzipiert. Yamal ist bei kleinen Objekten eine Anwendung des in der Literatur sattsam diskutierten arraybasierten Preallokators.

Yamal geht dabei von einer festen Seitengrösse aus. Die Seiten werden dabei auf feste Grenzen ausgerichtet. Wenn Sie schon mal ein 8086 Segmentmodell gesehen haben sollte dies nichts neues sein. Yamal nutzt nun die Adresse beim freigeben als Kombination von Seitenbeginn und Offset. Damit ist bei einem Objekt immer dessen Verwaltungseinheit mit einer einfachen Operation auffindbar.

Oder in einem Satz:

Freigabe ist nun so schnell wie die Reservierung.

Daneben kommen noch extrem viele Listen von genutzten Seiten der Parallelität der Verwaltung zu gute. Multithreading also von Natur aus bestens unterstützt.

Yamal ist in C definiert und wurde unter Red Hat 7.1 in die glibc 2.2.2 eingebaut. Der Rechner bootet problemlos, KDE und emacs sowie gcc laufen selbst problemlos.

Unter C++ kann Yamal in den globalen operator new und operator delete eingebaut werden. Damit kann unter GNU g++ sofort die gesammte Verwaltung der Bibliothek übernommen werden. Unter VC 6 dagegen kann nur in der Übersetzungseinheit damit operiert werden (Seufz !).

Eine kommerzielle Version mit Statistikeinheit kann zum lokalisieren von Speicherverschwendern genutzt werden.

Eine weitere kommerzielle Version kann mit einer speziellen Stringverarbeitungsbibliothek zusammen als Hilfe beim Überschreiben von Speicherbereichen und fehlerhaften Freigaben genutzt werden.

Quellcode:

zip 1.0.0

tar gzip 1.0.0