Completed
Pull Request — master (#8)
by Harry
28:53
created

PerformanceTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 2
Bugs 0 Features 2
Metric Value
c 2
b 0
f 2
dl 0
loc 38
wmc 4
lcom 0
cbo 4
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A testPerformance() 0 18 3
A getFixtures() 0 7 1
1
<?php
2
3
namespace Graze\CsvToken\Test\Performance;
4
5
use Graze\CsvToken\Csv\CsvConfiguration;
6
use Graze\CsvToken\Parser;
7
use Graze\CsvToken\Test\TestCase;
8
use Graze\CsvToken\Tokeniser\StreamTokeniser;
9
10
class PerformanceTest extends TestCase
11
{
12
    /**
13
     * @dataProvider getFixtures
14
     *
15
     * @param string $path
16
     * @param int    $iterations
17
     */
18
    public function testPerformance($path, $iterations)
19
    {
20
        $runs = array_pad([], $iterations, -1);
21
22
        foreach ($runs as &$iteration) {
23
            $start = microtime(true);
24
            $parser = new Parser();
25
            $tokeniser = new StreamTokeniser(new CsvConfiguration(), fopen($path, 'r'));
26
            foreach ($parser->parse($tokeniser->getTokens()) as $row) {
27
                echo '';
28
            }
29
            $iteration = microtime(true) - $start;
30
        }
31
32
        $average = array_sum($runs) / count($runs);
33
34
        printf("\nPath: %s - iterations: %d - average: %.2f ms\n", $path, count($runs), $average * 1000);
35
    }
36
37
    /**
38
     * @return array
39
     */
40
    public function getFixtures()
41
    {
42
        return [
43
            [__DIR__ . '/fixture.csv', 20],
44
            [__DIR__ . '/big.csv', 5],
45
        ];
46
    }
47
}
48