Giter VIP home page Giter VIP logo

eloquent-steps's Introduction

Eloquent::steps()

steps() является альтернативой chunk(), но в отличии от последнего, который реализует пагинацию через LIMIT x OFFSET y использует конструкцию WHERE id > x LIMIT y

На реальной БД (pgsql 9.5, over строк таблица) прирост скорости перебора составил более чем в 2 раза и при этом потребовал минимальных изменений кода.

Использование

<?php

use Illuminate\Database\Eloquent\Collection;

Items::steps(1000, function(Collection $items) {
    foreach ($items as $item) {
        /* do stuf */
        $item->touch();
    }
    
    return $item->id ?? false;
});

Единственное отличие: необходимо вернуть значение последнего id для продолжения или false для завершения цикла.

Сравнение скорости

  • chunk() elapsed: 68.626878023148 avr: 0.068402220249176 iteration: 1000 ids: 1000000
  • steps() elapsed: 29.601042985916 avr: 0.029474520921707 iteration: 1000 ids: 1000000

см. /for-test

тем кто дочитал

Да, я знаю, что надо добавить тестов, перевести на английский и вообще оформить pull request. Но я ленивая жопа. Возможно настолько, что не дочитал документацию и в laravel уже давно такое сделано.

eloquent-steps's People

Contributors

romach3 avatar

Watchers

 avatar

Forkers

guoyu07

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.