Skip to content

FYI: Very compact "lean" version of DelegatingScheduler #353

Description

@magicprinc

This is the continuation of #349

Here:
https://github.com/magicprinc/failsafe/commits/leap_of_faith

Final memory balance:
-1 fat object CompletableFuture
-1 lambda Callable in DelegatingScheduler.schedule
-1 Callable-Runnable wrapper in delayer().schedule (Runnables are wrapped as Callables in FutureTask ctor)

+1 very lean object ScheduledCompletableFuture implements ScheduledFuture, Callable
(not a CompletableFuture anymore)

I am sure this is the final step and one can't optimize this class further.
Not a single unused byte in memory!

Activity

  1. magicprinc commented on Nov 29, 2022

    @magicprinc
    Author

    I did a (not scientific) memory test:

    Old scheduled task in memory: 193 bytes
    New scheduled task in memory: 136 bytes
    70% of original

    https://github.com/magicprinc/failsafe/blob/9f23989e3bf77e9b525d0863ba89b89075240355/core/src/test/java/dev/failsafe/internal/util/DelegatingSchedulerTest.java#L404

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions