Ресурсы для понимания внутренних функций Fastutil - PullRequest
2 голосов
/ 23 апреля 2020

Я ищу ресурсы, чтобы понять, как Java типы данных реализованы внутри, и как библиотеки, такие как Fastutil и Eclipse Collections, обеспечивают более быструю реализацию того же самого. Я устал просматривать кодовые базы на Github (https://github.com/vigna/fastutil и https://github.com/eclipse/eclipse-collections соответственно), но я только понял, что используются генераторы кода.

Но какие генераторы кода используются? Как они используются? Почему сгенерированный код работает лучше? Почему они не являются реализациями по умолчанию в Java, если они работают лучше?

Я ищу какие-либо ресурсы / списки чтения, которые охватывают эту топику c. Youtube и Google мало чем помогли.

Спасибо

1 Ответ

3 голосов
/ 24 апреля 2020

Eclipse Collections использует StringTemplate для генерации своих примитивных коллекций.

Вы можете посмотреть репозиторий Eclipse Collections в этом каталоге , чтобы найти шаблоны (в ресурсах) и код для генератора кода.

Сама генерация кода не приводит к повышению производительности. Использование примитивных коллекций может улучшить память и производительность. Избегание ручного кодирования коллекций для всех примитивных типов - вот почему генерация кода используется для коллекций Eclipse.

Здесь есть статья , в которой объясняются некоторые стратегии оптимизации с использованием коллекций Eclipse.

JEP 218: Обобщения по сравнению с примитивными типами предназначен для решения проблем производительности бокса в Java.

Вы должны проверить ожидаемый прирост производительности путем профилирования или написания тестов для вашего application.

Примечание: я являюсь коммиттером для Eclipse Collections.

...