NAME
Hypersonic::Future - High-performance JIT-compiled Future for async operations
SYNOPSIS
use Hypersonic::Future;
# Create a pending future
my $f = Hypersonic::Future->new;
# Resolve with values
$f->done('result', 'data');
# Or fail
$f->fail('Error message', 'category');
# Chaining
my $f2 = $f->then(sub {
my @results = @_;
return process(@results);
})->catch(sub {
my ($error, $category) = @_;
warn "Error: $error";
return 'default';
})->finally(sub {
cleanup();
});
DESCRIPTION
Hypersonic::Future is a high-performance Future implementation using JIT-compiled XS code.
BENCHMARK
======================================================================
Future Benchmark: Future::XS vs Hypersonic::Future
======================================================================
Compiling Hypersonic::Future JIT...
JIT compilation complete.
Running each test for 2 CPU seconds...
(Set BENCH_TIME env var to change)
Future::XS version: 0.15
Hypersonic::Future version: 0.06
----------------------------------------------------------------------
Test 1: new() - Create pending future
----------------------------------------------------------------------
Rate Future::XS Hypersonic::Future
Future::XS 6120900/s -- -28%
Hypersonic::Future 8461824/s 38% --
----------------------------------------------------------------------
Test 2: new() + done() - Create and resolve
----------------------------------------------------------------------
Rate Future::XS Hypersonic::Future
Future::XS 3261265/s -- -52%
Hypersonic::Future 6796324/s 108% --
----------------------------------------------------------------------
Test 3: new() + fail() - Create and fail
----------------------------------------------------------------------
Rate Future::XS Hypersonic::Future
Future::XS 2929449/s -- -53%
Hypersonic::Future 6167596/s 111% --
----------------------------------------------------------------------
Test 4: is_ready() + is_done() - State checks (resolved)
----------------------------------------------------------------------
Rate Future::XS Hypersonic::Future
Future::XS 10586581/s -- -29%
Hypersonic::Future 14908664/s 41% --
----------------------------------------------------------------------
Test 5: result() - Get result value
----------------------------------------------------------------------
Rate Future::XS Hypersonic::Future
Future::XS 10674557/s -- -22%
Hypersonic::Future 13736799/s 29% --
----------------------------------------------------------------------
Test 6: done() with multiple values (5 args)
----------------------------------------------------------------------
Rate Future::XS Hypersonic::Future
Future::XS 2705464/s -- -55%
Hypersonic::Future 6002047/s 122% --
----------------------------------------------------------------------
Test 7: is_failed() - Check failed state
----------------------------------------------------------------------
Rate Future::XS Hypersonic::Future
Future::XS 9700482/s -- -34%
Hypersonic::Future 14750291/s 52% --
----------------------------------------------------------------------
Test 8: failure() - Get failure reason
----------------------------------------------------------------------
Rate Future::XS Hypersonic::Future
Future::XS 7323752/s -- -36%
Hypersonic::Future 11436124/s 56% --
======================================================================
Hypersonic::Future Only Tests (callback operations)
======================================================================
(Future::XS 0.15 has wrap_cb issues with callbacks)
----------------------------------------------------------------------
Test 9: then() - Chain transformation [Hypersonic only]
----------------------------------------------------------------------
Hypersonic::Future: 3 wallclock secs ( 2.06 usr + 0.01 sys = 2.07 CPU) @ 2986523.67/s (n=6182104)
----------------------------------------------------------------------
Test 10: on_done() + done() - Callback [Hypersonic only]
----------------------------------------------------------------------
Hypersonic::Future: 2 wallclock secs ( 2.54 usr + 0.03 sys = 2.57 CPU) @ 2142030.74/s (n=5505019)
----------------------------------------------------------------------
Test 11: then()->catch()->finally() [Hypersonic only]
----------------------------------------------------------------------
Hypersonic::Future: 1415799/s (10000 iterations in 0.01 seconds)
======================================================================
Benchmark complete!
======================================================================