Quick Test Fitur Baru Laravel 6, Seberapa Efektif Lazzy Collection?

By Admin
29 Jul 2022

Laravel 6 sudah beberapa minggu ini release. Tentu ada beberapa update fitur-fitur keren yang patut dicoba.

Yang paling menarik perhatian saya adalah Lazzy Collection.

Dari beberapa pengalaman membuat aplikasi selama ini, dalam Laravel, jika ingin me-load data dalam jumlah besar sekaligus maka membuat memory usagenya menjadi membengkak. Ujung-ujungnya bisa membuat server down kalau tidak kuat.

Jadi lazzy collection ini sepertinya menjadi sebuah jawaban keresahan saya selama ini. hahaha ~

Kita akan melakukan testing aja. Testingnya sangat sederhana. Mungkin di komputer berbeda tapi tujuannya hanya ingin tahu perbandingan kalau pakai collection biasa memory usagenya berapa, kalau pakai lazzy collection memory usagenya berapa.

Yuk kita mulai saja.

Step 1. Install laravel 6

create-project --prefer-dist laravel/laravel testing 6.0

Jika sudah terinstall, install juga depedency yang dibutuhkan.

Untuk info mengenai cara install laravel lebih lanjut bisa akses: https://laravel.com/docs/

Step 2. Install debugbar untuk melihat memory usage.

Jika laravel sudah terinstall, tambahkan package debugbar.

composer require barryvdh/laravel-debugbar --dev

Jika laravel sudah terinstall, kamu buka di browser dan harusnya muncul tampilan awal laravel dengan debugbar disebelah bawah.

Laravel & debugbar

Step 2. Dummy data & routing

Selanjutnya? Kita perlu dummy data untuk testing. Kita akan generate lewat seeder.

Edit file DatabaseSeeder.php untuk membuat dumy user dengan menggunakan UserFactory.php yang sudah ada.

<?php

use App\User;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        
        factory(User::class, 100000)
		        ->create();
    }
}

Run migration dan seeder.

php artisan migrate:install

php artisan db:seed

Kamu bisa cek jika table sudah berhasil di migrate dan data user sudah terisi.

Buat 2 route baru untuk testing collection biasa dan lazzy collection.

<?php


Route::get('/', function () {
    $users = \App\User::cursor();
	foreach ($users as $key => $value) {
		echo $value->id;
	}
    return 1;
});

Route::get('/2', function () {
    $users = \App\User::all();
    foreach ($users as $key => $value) {
		echo $value->id;
	}
    return 1;
});

Jadi route pertama : http://127.0.0.1:800/ akan menggunakan lazzy collection dan http://127.0.0.1:800/2 akan menggunakan normal collection.

Saatnya testing.

Kita lihat perbedaan masing-masing penggunaan memorinya lewat gambar di bawah ini.

Yang kanan lazzy collection. Yang kiri collection biasa.

1000 data

Untuk load 100.000 data, lazz collection memakai memory 70.22MB sedangkan collection biasa 150.25MB

Ternyata hampir mengurangi setengah kebutuhan ram dibandingkan dengan collection biasa. Keren.

10.000 data

Untuk load 10.000 data, lazz collection memakai memory 7.5MB sedangkan collection biasa 11.17MB

Perbedaan memory usage hampir 50% juga.

1000 data

Untuk load 1000 data, lazz collection memakai memory 4.5MB sedangkan collection biasa 5.18MB

Untuk data yang 1000 ke bawah perbedaan memory usagenya tidak terlalu besar sih, tapi masih lebih kecil lazzy loading.

Kesimpulan

Lazzy Collection terbukti mengurangi penggunaan memori saat membutuhkan data besar yang akan diload sekaligus. Tentu ini menjadi sebuah kabar bagi para artisan. Walaupun secara best practice load data sekaligus tidak dianjurkan, maka dengan lazzy collection ini penggunaan memory jadi lebih hemat.

Artikel Lainnya

Artikel lain yang mungkin menarik juga untuk kamu baca.

Cara membuat OTP di Laravel

Tutorial cara mengirim kode OTP di laravel. Kode OTP sering digunakan untuk validasi atau tambahan security saat register atau login. Bagaimana caranya? Simak artikel berikut ini.
Admin
5 min read

Tutorial Membuat Invoice PDF di Laravel dengan DOMPDF

Halo teman ngide, kali ini kita akan membuat tutorial singkat agaimana cara membuat file PDF pada aplikasi web berbasis Laravel?
Admin
5 min read

Helllo Laravel! Perkenalan dengan Laravel

Hello ngide, Sekarang mau bahas sebuah framework yang berkembang dengan pesat akhir-akhir ini yaitu Laravel.
Admin
5 min read

© 2024