• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eliashaeussler / cache-warmup / 28539802234

01 Jul 2026 06:40PM UTC coverage: 89.739% (-0.4%) from 90.11%
28539802234

Pull #676

github

eliashaeussler
[!!!][FEATURE] Introduce profiler to measure duration and memory usage
Pull Request #676: [!!!][FEATURE] Introduce profiler to measure duration and memory usage

60 of 70 new or added lines in 7 files covered. (85.71%)

12 existing lines in 2 files now uncovered.

1819 of 2027 relevant lines covered (89.74%)

10.19 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

44.44
/src/Helper/StringHelper.php
1
<?php
2

3
declare(strict_types=1);
4

5
/*
6
 * This file is part of the Composer package "eliashaeussler/cache-warmup".
7
 *
8
 * Copyright (C) 2020-2026 Elias Häußler <elias@haeussler.dev>
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU General Public License as published by
12
 * the Free Software Foundation, either version 3 of the License, or
13
 * (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
 * GNU General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU General Public License
21
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22
 */
23

24
namespace EliasHaeussler\CacheWarmup\Helper;
25

26
use Carbon\CarbonInterval;
27
use NumberFormatter;
28

29
use function abs;
30
use function end;
31
use function round;
32

33
/**
34
 * StringHelper.
35
 *
36
 * @author Elias Häußler <elias@haeussler.dev>
37
 * @license GPL-3.0-or-later
38
 */
39
final readonly class StringHelper
40
{
41
    public static function formatBytes(int $bytes): string
6✔
42
    {
43
        $bytes = round($bytes);
6✔
44
        $units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];
6✔
45

46
        foreach ($units as $unit) {
6✔
47
            if (abs($bytes) < 1024 || $unit === end($units)) {
6✔
48
                break;
6✔
49
            }
50

51
            $bytes /= 1024;
5✔
52
        }
53

54
        return round($bytes, 2).' '.($unit ?? 'B');
6✔
55
    }
56

NEW
UNCOV
57
    public static function formatDuration(int $milliseconds): string
×
58
    {
NEW
UNCOV
59
        return CarbonInterval::milliseconds($milliseconds)
×
NEW
UNCOV
60
            ->cascade()
×
NEW
UNCOV
61
            ->forHumans(['minimumUnit' => 'ms'], true, 1)
×
NEW
UNCOV
62
        ;
×
63
    }
64

NEW
UNCOV
65
    public static function formatNumber(int $number): string
×
66
    {
NEW
UNCOV
67
        $formatted = NumberFormatter::create('en', NumberFormatter::DEFAULT_STYLE)->format($number);
×
68

NEW
UNCOV
69
        if (false === $formatted) {
×
NEW
UNCOV
70
            return (string) $number;
×
71
        }
72

NEW
UNCOV
73
        return $formatted;
×
74
    }
75
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc