Аналіз продуктивності з використанням інструментів вимірювання Laravel

3
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Ларавел пропонує потужні інструменти для вимірювання продуктивності, які допомагають розробникам точно оцінювати час виконання коду та оптимізувати його. Досліджуйте, як ці утиліти можуть допомогти вам виявити «вузькі місця» та обрати найкращі рішення для вашого проєкту!

Утиліти вимірювання Laravel надають розробникам точні можливості для оцінки та оптимізації коду. Ці інструменти усувають необхідність у здогадках під час порівняння різних підходів до реалізації та виявлення вузьких місць у продуктивності.

Метод вимірювання бази виводить час виконання безпосередньо в консоль:

use App\Models\Product;
use Illuminate\Support\Benchmark;

Benchmark::dd(fn () => Product::find(1));

Кілька варіантів реалізації можна оцінити одночасно для визначення оптимальних характеристик продуктивності:

Benchmark::dd([
    'Прямий підрахунок' => fn () => Product::count(),
    'Підрахунок колекції' => fn () => Product::all()->count(),
]);

Ці інструменти вимірювання безперервно інтегруються з існуючою інфраструктурою Laravel, використовуючи ті ж системи шифрування та конфігурації в усьому додатку.

Створення системи рекомендацій продуктів демонструє практичні застосування вимірювань:

class RecommendationEngine
{
    public function analyzePerformance(): array
    {
        return Benchmark::dd([
            'Алгоритм A' => fn () => $this->collaborativeFiltering(),
            'Алгоритм B' => fn () => $this->contentBasedFiltering(),
            'Алгоритм C' => fn () => $this->hybridApproach(),
        ]);
    }

    public function measureWithResults(): array
    {
        [$recommendations, $duration] = Benchmark::value(
            fn () => $this->hybridApproach()
        );

        $this->logPerformanceMetrics($duration);

        return $recommendations;
    }

    private function collaborativeFiltering(): array
    {
        return Product::whereHas('purchases', function ($query) {
            $query->whereIn('user_id', $this->getSimilarUsers());
        })->limit(10)->get()->toArray();
    }

    private function contentBasedFiltering(): array
    {
        return Product::where('category_id', $this->user->preferred_category)
            ->orderBy('rating', 'desc')
            ->limit(10)
            ->get()
            ->toArray();
    }

    private function hybridApproach(): array
    {
        $collaborative = collect($this->collaborativeFiltering());
        $contentBased = collect($this->contentBasedFiltering());

        return $collaborative->merge($contentBased)
            ->unique('id')
            ->take(10)
            ->values()
            ->toArray();
    }
}

Вимірювальна система підтримує контроль ітерацій для підвищення точності під час тестування швидких операцій. Виконання операцій кілька разів та обчислення середніх значень забезпечує більш надійні дані про продуктивність, особливо при порівнянні незначних відмінностей між стратегіями реалізації

Популярні

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту

Logomark Logotype

Laravel Boost — ваш стартовий набір для програмування з використанням штучного інтелекту

Вперше у світі Laravel з'являється можливість, яка значно спростить ваше повсякденне програмування завдяки новому пакету Laravel Boost. Читайте статтю, щоб дізнатися, як посилена інтеграція штучного інтелекту може підвищити ефективність вашої роботи та оптимізувати створення проектів у Laravel

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!