What’s New

RxJava v4.0.0-alpha-20

v4.0.0-alpha-20
Added
  • Streamable operator with blockingLast, ignoreElements, repeat, repeatWhen, retry, and retryWhen support
Changed
  • Optimized range and collect internals with improved Streamable implementation
  • Optimized several operator internals for Streamable
  • Optimized mapOptional operator performance
  • Optimized filter, map fusion, and lastOrError for Streamable
  • Optimized skip operations for Streamable
  • Optimized flattenAsFlowable with deferred evaluation
  • Optimized collect slow path and concatIterable
  • Reduced whenComplete usage in collect operation
What's Changed
Implementation
Dependabot
Streamable Scrabble

Ongoing measure/optimization. Managed to shave over half the time off (but some came from using better collector implementations for sure).

:computer: i9 275HX, 32GB LPDDR5 6400MT CL52, Windows 25H2, JDK 26.0.1

StepTime (ms)Improvementvs Baseline
Baseline42,5119--
Avoid whenComplete usage in collect37,566-11,65%-
IndexableSource in collect35,815-4,66%-15,77%
concatIterable optimizations31,971-10,73%-24,81%
map fusions30,623-4,22%-27,98%
flattenAsFlowable deferred opt27,999-8,57%-34,15%
MutableLong in the bench26,159-6,57%-38,48%
lastOrError opt25,164-3,80%-40,82%
custom Collector summers24,885-1,11%-41,47%
skip optimizations24,791-0,38%-41,69%
filter opt, filter+map fusion, lastOrError opt23,566-4,94%-44,58%
slow path collect optimization22,392-4,98%-47,34%
CharStreamer EnumerableSource marker21,843-2,45%-48,63%
custom max collector20,369-6,75%-52,09%

Versus the other techs

TechTime in milliseconds
For Loop JDK 262,125
IObservable synchronous7,917
IEnumerable port8,225
Ix 1.0.08,463
RxJava Observable 3.1.1210,119
RxJava Observable 4a19 :arrow_backward:10,484
RxJava Observable 2.2.2110,612
RxJava Flowable 4a1911,424
RxJava Flowable 3.1.1212,499
RxJava Flowable 2.2.2113,849
Reactive4Java 0.98.113,086
Guava 33.6.012,564
Reactor 3.8.614,158
CyclopsReactOpt17,273
:new: RxJava Streamable 4a20 :arrow_backward:20,369
JOOL 0.9.1538,876
RxJava Streamable 4a19 :arrow_backward:42,512

Full Changelog: https://github.com/ReactiveX/RxJava/compare/v4.0.0-alpha-19...v4.0.0-alpha-20

View original