-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCompareWithRealpath.php
74 lines (58 loc) · 1.52 KB
/
CompareWithRealpath.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?php
/**
* JBZoo Toolbox - Path.
*
* This file is part of the JBZoo Toolbox project.
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @license MIT
* @copyright Copyright (C) JBZoo.com, All rights reserved.
* @see https://github.com/JBZoo/Path
*/
declare(strict_types=1);
use JBZoo\Path\Path;
use JBZoo\Utils\FS;
use Symfony\Component\Filesystem\Filesystem;
/**
* @BeforeMethods({"init"})
* @Revs(10000)
* @Iterations(3)
*/
class CompareWithRealpath
{
private string $root;
private Filesystem $fs;
public function init(): void
{
$this->fs = new Filesystem();
$this->root = FS::clean(__DIR__ . '/test', '/');
$this->fs->remove($this->root);
}
public function benchBaseline(): bool|string
{
return \realpath($this->root . '/' . \mt_rand());
}
public function benchNative(): bool|string
{
$newDir = $this->root . \mt_rand();
$this->fs->mkdir($newDir);
// start
$result = \realpath($newDir);
// end
$this->fs->remove($result);
return $result;
}
public function benchJBZooPath(): ?string
{
$newDir = $this->root . \mt_rand();
$this->fs->mkdir($newDir);
// start
$virtualPath = new Path();
$virtualPath->set('default', $newDir);
$result = $virtualPath->get('default:');
// end
$this->fs->remove($result);
return $result;
}
}