Wäre Java schneller mit anderer Speicherverwaltung?



  • Konfuzius sagt: Ein Weg zu kennen, ist nicht dasselbe wie Ihn zu gehen.



  • hustbaer schrieb:

    @Wiss0r: Welchen Allocator hat die C++ Variante verwendet? Ohne diese Angabe ist der Hinweis ziemlich wertlos.

    Nö, wieso? Jetzt hat Gregor den Thread verlinkt den ich meinte und du kannst dir alles in Ruhe durchlesen 🙂

    Danke Gregor!



  • @Wiss0r:
    Hm.
    Ich kann weder in dem hier verlinkten Thread noch in dem dort wiederum verlinkten Thread jmd. finden der das z.B. mal mit tcmalloc o.ä. probiert hätte.
    Dass die Variante mit dem selbstgestrickten small object allocator recht schnell ist ist klar, der verzichtet ja auch darauf new komplett zu ersetzen (=muss mit grössen umgehen können die erst zur Laufzeit bekannt sind), und verzichtet auch auf jegliche thread-sicherheit.

    Interessant wäre für mich ein Vergleich zwischen einem generischen Allokator ala tcmalloc und GC. Alles andere als einen fertigen, generischen Allokator einzubinden ist meist einfach zuviel Aufwand. Ausgenommen Fälle wo es wirklich extrem viel bringt und schön weggekapselt werden kann -- wenn man z.b. irgendwelche low-level Libraries schreibt.



  • hustbaer schrieb:

    @Wiss0r:
    Hm.
    Ich kann weder in dem hier verlinkten Thread noch in dem dort wiederum verlinkten Thread jmd. finden der das z.B. mal mit tcmalloc o.ä. probiert hätte.
    Dass die Variante mit dem selbstgestrickten small object allocator recht schnell ist ist klar, der verzichtet ja auch darauf new komplett zu ersetzen (=muss mit grössen umgehen können die erst zur Laufzeit bekannt sind), und verzichtet auch auf jegliche thread-sicherheit.

    Interessant wäre für mich ein Vergleich zwischen einem generischen Allokator ala tcmalloc und GC. Alles andere als einen fertigen, generischen Allokator einzubinden ist meist einfach zuviel Aufwand. Ausgenommen Fälle wo es wirklich extrem viel bringt und schön weggekapselt werden kann -- wenn man z.b. irgendwelche low-level Libraries schreibt.

    Dafür gibts doch die Boost.Allocators, du weißt in C++ ja wie groß deine Datenstrukturen sind.


Anmelden zum Antworten