Skip to content

Commit 02f79e4

Browse files
martinsikdavidwdan
authored andcommitted
more benchmarks
1 parent cea5ee5 commit 02f79e4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+539
-22
lines changed

benchmark/catch/catch.php

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::error(new \Exception('error'))
6+
->catchError(function() {
7+
return Observable::just(25);
8+
});
9+
10+
return function() use ($source) {
11+
return $source;
12+
};
+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::range(0, 25)
6+
->combineLatest([Observable::range(0, 25)], function($a, $b) {
7+
return $a + $b;
8+
});
9+
10+
return function() use ($source) {
11+
return $source;
12+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
use Rx\Scheduler\EventLoopScheduler;
5+
use React\EventLoop\StreamSelectLoop;
6+
7+
$loop = new StreamSelectLoop();
8+
$scheduler = new EventLoopScheduler($loop);
9+
10+
$source = Observable::range(0, 25, $scheduler)
11+
->combineLatest([Observable::range(0, 25, $scheduler)], function($a, $b) {
12+
return $a + $b;
13+
});
14+
15+
$factory = function() use ($source) {
16+
return $source;
17+
};
18+
19+
return [$factory, $loop];

benchmark/concat/concat.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
use Rx\Observable;
44

5-
$source = Observable::range(1, 25)
6-
->concat(Observable::range(1, 25));
5+
$source = Observable::range(0, 25)
6+
->concat(Observable::range(0, 25));
77

88
return function() use ($source) {
99
return $source;

benchmark/concat/concat_eventloop.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
$loop = new StreamSelectLoop();
88
$scheduler = new EventLoopScheduler($loop);
99

10-
$source = Observable::range(1, 25, $scheduler)
11-
->concat(Observable::range(1, 25, $scheduler));
10+
$source = Observable::range(0, 25, $scheduler)
11+
->concat(Observable::range(0, 25, $scheduler));
1212

1313
$factory = function() use ($source) {
1414
return $source;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::emptyObservable()
6+
->defaultIfEmpty(Observable::just(25));
7+
8+
return function() use ($source) {
9+
return $source;
10+
};

benchmark/distinct/distinct.php

+4-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
use Rx\Observable;
44

5-
$range = array_map(function($val) {
6-
return $val % 3;
7-
}, range(0, 25));
8-
9-
$source = Observable::fromArray($range)
5+
$source = Observable::range(0, 25)
6+
->map(function($i) {
7+
return $i % 3;
8+
})
109
->distinct();
1110

1211
return function() use ($source) {

benchmark/distinct/distinct_eventloop.php

+4-5
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,10 @@
88
$loop = new StreamSelectLoop();
99
$scheduler = new EventLoopScheduler($loop);
1010

11-
$range = array_map(function($val) {
12-
return $val % 3;
13-
}, range(0, 25));
14-
15-
$source = (new ArrayObservable($range, $scheduler))
11+
$source = Observable::range(0, 25, $scheduler)
12+
->map(function($i) {
13+
return $i % 3;
14+
})
1615
->distinct();
1716

1817
$factory = function() use ($source) {

benchmark/forkJoin/forkJoin.php

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::defer(function() {
6+
return Observable::forkJoin([
7+
Observable::just(25),
8+
Observable::range(0, 25),
9+
Observable::fromArray(([1, 2, 3, 4, 5]))
10+
]);
11+
});
12+
13+
return function() use ($source) {
14+
return $source;
15+
};

benchmark/groupBy/groupBy.php

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::range(0, 25)
6+
->map(function($i) {
7+
return ['key' => $i % 5];
8+
})
9+
->groupBy(function($item) {
10+
return $item['key'];
11+
});
12+
13+
return function() use ($source) {
14+
return $source;
15+
};
+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
use Rx\Scheduler\EventLoopScheduler;
5+
use React\EventLoop\StreamSelectLoop;
6+
7+
$loop = new StreamSelectLoop();
8+
$scheduler = new EventLoopScheduler($loop);
9+
10+
$source = Observable::range(0, 25, $scheduler)
11+
->map(function($i) {
12+
return ['key' => $i % 5];
13+
})
14+
->groupBy(function($item) {
15+
return $item['key'];
16+
});
17+
18+
$factory = function() use ($source) {
19+
return $source;
20+
};
21+
22+
return [$factory, $loop];

benchmark/isEmpty/isEmpty.php

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::just(25)
6+
->isEmpty();
7+
8+
return function() use ($source) {
9+
return $source;
10+
};

benchmark/merge/merge.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
use Rx\Observable;
44

5-
$source = Observable::range(1, 25)
6-
->merge(Observable::range(1, 25));
5+
$source = Observable::range(0, 25)
6+
->merge(Observable::range(0, 25));
77

88
return function() use ($source) {
99
return $source;

benchmark/merge/merge_eventloop.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
$loop = new StreamSelectLoop();
88
$scheduler = new EventLoopScheduler($loop);
99

10-
$source = Observable::range(0, 250, $scheduler)
11-
->merge(Observable::range(0, 250, $scheduler));
10+
$source = Observable::range(0, 25, $scheduler)
11+
->merge(Observable::range(0, 25, $scheduler));
1212

1313
$factory = function() use ($source) {
1414
return $source;

benchmark/mergeAll/mergeAll_eventloop.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
$loop = new StreamSelectLoop();
88
$scheduler = new EventLoopScheduler($loop);
99

10-
$source = Observable::range(0, 25)
11-
->map(function() {
12-
return Observable::range(0, 25);
10+
$source = Observable::range(0, 25, $scheduler)
11+
->map(function() use ($scheduler) {
12+
return Observable::range(0, 25, $scheduler);
1313
})
1414
->mergeAll();
1515

benchmark/pluck/pluck.php

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::just([1, 2, 3, 4, 5])
6+
->pluck(2);
7+
8+
return function() use ($source) {
9+
return $source;
10+
};

benchmark/reduce/reduce.php

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::range(0, 25)
6+
->reduce(function($a, $b) {
7+
return $a + $b;
8+
});
9+
10+
return function() use ($source) {
11+
return $source;
12+
};

benchmark/reduce/reduce_eventloop.php

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
use Rx\Scheduler\EventLoopScheduler;
5+
use React\EventLoop\StreamSelectLoop;
6+
7+
$loop = new StreamSelectLoop();
8+
$scheduler = new EventLoopScheduler($loop);
9+
10+
$source = Observable::range(0, 25, $scheduler)
11+
->reduce(function($a, $b) {
12+
return $a + $b;
13+
});
14+
15+
$factory = function() use ($source) {
16+
return $source;
17+
};
18+
19+
return [$factory, $loop];

benchmark/repeat/repeat.php

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::range(0, 25)
6+
->repeat(5);
7+
8+
return function() use ($source) {
9+
return $source;
10+
};

benchmark/repeat/repeat_eventloop.php

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
use Rx\Scheduler\EventLoopScheduler;
5+
use React\EventLoop\StreamSelectLoop;
6+
7+
$loop = new StreamSelectLoop();
8+
$scheduler = new EventLoopScheduler($loop);
9+
10+
$source = Observable::range(0, 25, $scheduler)
11+
->repeat(5);
12+
13+
$factory = function() use ($source) {
14+
return $source;
15+
};
16+
17+
return [$factory, $loop];

benchmark/retry/retry.php

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$maxRetryCount = 25;
6+
$newRetryCount = 0;
7+
8+
$source = Observable::range(5, 1)
9+
->flatMap(function($x) use (&$maxRetryCount, &$newRetryCount) {
10+
if (++$newRetryCount < $maxRetryCount - 1) {
11+
return Observable::error(new \Exception('error'));
12+
}
13+
return Observable::just($x);
14+
})
15+
->retry($maxRetryCount);
16+
17+
return function() use ($source) {
18+
return $source;
19+
};

benchmark/retry/retry_eventloop.php

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
use Rx\Scheduler\EventLoopScheduler;
5+
use React\EventLoop\StreamSelectLoop;
6+
7+
$loop = new StreamSelectLoop();
8+
$scheduler = new EventLoopScheduler($loop);
9+
10+
$maxRetryCount = 25;
11+
$newRetryCount = 0;
12+
13+
$source = Observable::range(5, 1, $scheduler)
14+
->flatMap(function($x) use (&$maxRetryCount, &$newRetryCount) {
15+
if (++$newRetryCount < $maxRetryCount - 1) {
16+
return Observable::error(new \Exception('error'));
17+
}
18+
return Observable::just($x);
19+
})
20+
->retry($maxRetryCount);
21+
22+
$factory = function() use ($source) {
23+
return $source;
24+
};
25+
26+
return [$factory, $loop];

benchmark/scan/scan.php

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::range(0, 25)
6+
->scan(function($acc, $x) {
7+
return $x + $x;
8+
});
9+
10+
return function() use ($source) {
11+
return $source;
12+
};

benchmark/scan/scan_eventloop.php

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
use Rx\Scheduler\EventLoopScheduler;
5+
use React\EventLoop\StreamSelectLoop;
6+
7+
$loop = new StreamSelectLoop();
8+
$scheduler = new EventLoopScheduler($loop);
9+
10+
$source = Observable::range(0, 25, $scheduler)
11+
->scan(function($acc, $x) {
12+
return $x + $x;
13+
});
14+
15+
$factory = function() use ($source) {
16+
return $source;
17+
};
18+
19+
return [$factory, $loop];

benchmark/skip/skip.php

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?php
2+
3+
use Rx\Observable;
4+
5+
$source = Observable::range(0, 50)
6+
->skip(25);
7+
8+
return function() use ($source) {
9+
return $source;
10+
};

0 commit comments

Comments
 (0)