Issues (26)

benchmark.php (1 issue)

Labels
Severity
1
<?php
2
3
include_once __DIR__.'/vendor/autoload.php';
4
5
use JSONAPI\Resource\Includeset;
6
use JSONAPI\Resource\Serializer;
7
use JSONAPI\Resource\LinkGenerator\BasicLinksGenerator;
8
use JSONAPI\Resource\Metadata\Repository;
9
10
use JSONAPI\Resource\Tests\Models\Article;
11
use JSONAPI\Resource\Tests\Models\People;
12
use JSONAPI\Resource\Tests\Models\Comment;
13
14
$max_times = 1000;
15
16
function convert($size)
17
{
18
    $unit = ['b', 'kb', 'mb', 'gb', 'tb', 'pb'];
19
    return @round($size/pow(1024, ($i = floor(log($size, 1024)))), 2).' '.$unit[$i];
20
}
21
22
$articles = [
23
    new Article(1, new People(9), [
24
        new Comment(5, new People(2), 'First!'),
25
        new Comment(12, new People(9), 'I like XML better')
26
    ])
27
];
28
29
function test_serialize($resource) {
30
    $includeset = Includeset::fromString('author,comments.author');
31
    $metadataRepository = new Repository();
32
    $linkGenerator = new BasicLinksGenerator($metadataRepository, 'http://example.com');
33
    $serializer = new Serializer(
34
        includeset: $includeset,
0 ignored issues
show
A parse error occurred: Syntax error, unexpected ':', expecting ',' or ')' on line 34 at column 18
Loading history...
35
        linksGenerator: $linkGenerator
36
    );
37
    $serializer->serialize($resource);
38
}
39
40
function test_serialize_shared_metadata($resource, $metadataRepository) {
41
    $includeset = Includeset::fromString('author,comments.author');
42
    $linkGenerator = new BasicLinksGenerator($metadataRepository, 'http://example.com');
43
    $serializer = new Serializer(
44
        metadata: $metadataRepository,
45
        includeset: $includeset,
46
        linksGenerator: $linkGenerator,
47
    );
48
    $serializer->serialize($resource);
49
}
50
51
$start_time = microtime(TRUE);
52
$times = 0;
53
$metadataRepositoryShared = new Repository();
54
while ($times < $max_times) {
55
    test_serialize_shared_metadata($articles, $metadataRepositoryShared);
56
    $times++;
57
}
58
$end_time = microtime(TRUE);
59
echo sprintf("With metadata %s times: %s seconds\n", number_format($max_times), $end_time - $start_time);
60
echo sprintf("Max memory %s\n", convert(memory_get_peak_usage()));
61