В EventBus от Greenrobot и Otto есть общая методология работы (register, post, unregister, ...), но есть отличия, которые можно посмотреть в следующей таблице:
EventBus | Otto | |
---|---|---|
Описание методов для обработки событий | Аннотации (начиния с версии 3.0 предварительно обрабатываемые аннотации, для увеличения производительности) | Аннотации |
Наследование событий | Да | Да |
Наследование подписчиков | Да | Не |
Кеширование последних событий | Да, sticky событие | Нет |
Генератор событий (например для кодирования кешированых событий ) | Нет | Да |
Доставка событий в публикующем потоке | Да (По умолчанию) | Да |
Доставка событий в главном потоке | Да | Нет |
Доставка событий в фоновом потоке | Да | Нет |
Ассинхронная доставка событий | Да | Нет |
Заметка: Приведенная ниже информация устрела, т.к. тест был проведен на версии EventBus 2.+, а версии 3.0 появились предварительно обработанные аннотации, которые работают значительно быстрее.
Т.к. производительность библиотек различается, было создано Android приложение, что бы провести тесты производительности (оно находится в официальном репозитории EventBux (EventBusPerformance). Для сравнения вы можете запустить его на своем устройстве.
TODO: Обновить для EventBus 3 с и без индексирования.
Результаты benchmark'а показывают что EventBus быстрее практически в каждом тесте:
EventBus | Otto | |
---|---|---|
Публикация 1000 событий, Android 2.3 emulator | ~70% faster | |
Публикация 1000 событий, S3 Android 4.0 | ~110% быстрее | |
Регистрация 1000 подписчиков, Android 2.3 emulator | ~10% быстрее | |
Регистрация 1000 подписчиков, S3 Android 4.0 | ~70% быстрее | |
Регистрация подписчиков, холодный старт, Android 2.3 emulator | ~350% быстрее | |
Регистрация подписчиков, холодный старт, S3 Android 4.0 | Одинаково |