Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Support/Benchmark.php
Строк: 70
<?php

namespace IlluminateSupport;

use 
Closure;

class 
Benchmark
{
    
/**
     * Measure a callable or array of callables over the given number of iterations.
     *
     * @param  Closure|array  $benchmarkables
     * @param  int  $iterations
     * @return array|float
     */
    
public static function measure(Closure|array $benchmarkablesint $iterations 1): array|float
    
{
        return 
collect(Arr::wrap($benchmarkables))->map(function ($callback) use ($iterations) {
            return 
collect(range(1$iterations))->map(function () use ($callback) {
                
gc_collect_cycles();

                
$start hrtime(true);

                
$callback();

                return (
hrtime(true) - $start) / 1000000;
            })->
average();
        })->
when(
            
$benchmarkables instanceof Closure,
            
fn ($c) => $c->first(),
            
fn ($c) => $c->all(),
        );
    }

    
/**
     * Measure a callable once and return the duration and result.
     *
     * @template TReturn of mixed
     *
     * @param  (callable(): TReturn)  $callback
     * @return array{0: TReturn, 1: float}
     */
    
public static function value(callable $callback): array
    {
        
gc_collect_cycles();

        
$start hrtime(true);

        
$result $callback();

        return [
$result, (hrtime(true) - $start) / 1000000];
    }

    
/**
     * Measure a callable or array of callables over the given number of iterations, then dump and die.
     *
     * @param  Closure|array  $benchmarkables
     * @param  int  $iterations
     * @return never
     */
    
public static function dd(Closure|array $benchmarkablesint $iterations 1): void
    
{
        
$result collect(static::measure(Arr::wrap($benchmarkables), $iterations))
            ->
map(fn ($average) => number_format($average3).'ms')
            ->
when($benchmarkables instanceof Closurefn ($c) => $c->first(), fn ($c) => $c->all());

        
dd($result);
    }
}
Онлайн: 0
Реклама