Java-библиотека Apache Arrow начиналась как разветвление ValueVectors Drill, так как проект Apache Arrow начался в начале 2016 года. Представление в памяти почти такое же;одно существенное отличие состоит в том, что Arrow использует 1 бит для представления, является ли векторный слот нулевым, если Drill использует 1 байт.Мы решили изменить это по соображениям эффективности использования памяти и использования внутренних операций popcount, чтобы проверить, содержит ли пакет значений какие-либо нули.
Обсуждается, следует ли использовать представление Arrow в Apache Drill точно, но естьнет никаких сроков, чтобы это произошло.Соответствующий вопрос: https://issues.apache.org/jira/browse/DRILL-4455
Apache Arrow был разработан как открытый стандарт с открытым API на многих языках программирования.Сейчас у нас есть некоторый уровень поддержки для 11 языков программирования, либо через нативные реализации, либо через привязки.Это включает в себя C, C ++, C #, Go, Java, JavaScript, MATLAB, Python, R, Ruby и Rust.
Мне неизвестен какой-либо анализ производительности, сравнивающий представления памяти, но разница, связанная с нулемпредставительство вряд ли вызовет существенную разницу.