Pull to refresh
17

Пользователь

1
Subscribers
Send message

Дело в том, что memory_get_usage показывает объём используемой памяти в текущий момент. У нас тестируемым является колбэк, который запускается, использует какое-то количество памяти, потом завершается, и в этот момент объём памяти высвобождается, поэтому в результате колбэка мы видим ноль.

Вариантом является тестирование через memory_get_peak_usage, так как тут мы увидим не текущее, а максимальное пиковое потребление.

Мои изыскания можно посмотреть тут:
https://github.com/dekmabot/runtime-comparison/blob/test-memory/src/Metrics/Memory.php

Остановился в решении на том, что нужно сбрасывать максимальное потребление между вызовами. И такой метод есть: memory_reset_peak_usage, но он появляется только в php8.2, поэтому внедрять его сейчас в библиотеку наверное рановато. А другого способа сбрасывать я не нашёл.

Помню на курсе педагогики про малышей нам рассказывали, в первые годы жизни ребёнка его органы, мышцы и области мозга развиваются последовательно с точностью до недель, на что влияет наличие внешних факторов, например если 3-4 месяц жизни ребёнка приходится на лето и малыш получает больше солнца и витамина D, то сильнее развиваются определённые направления. Тут же проводили параллели со знаками зодиака, что описанная в них специфика характера разных знаков как раз и обуславливается календарным месяцем, когда у ребёнка протекал тот этап развития, который влияет на эту черту характера.

Признаюсь, отношусь скептически к этой теории, так как знаки зодиака в разных широтах одинаковые, а климат разный.

Пс: теперь я знаю почему не стал футболистом, месяц не тот!

Если не запустится, скажут пошутили

Это решение не про бенчмарки, на сколько я понял автора, а про "сравнить мои решения между собой" по времени на глазок и выявить явного лидера. Даже "winner/loser" как бы намекают на несерьёзность :)

Если бы мне нужно было сравнение в изолированной среде с нормальным распределением, замерами памяти, сети и io, я бы выбрал другое решение, и потратил бы на него больше времени.

Простой и полезный скрипт, спасибо, часто провожу подобные тесты на коленке, взял на вооружение.

Столкнулся с округлением на маленьких значениях, попробую предложить pr, возможно с show($precision) , округляя уже на этапе вывода статистики.

    $range = [0, 1000000]; // 1M

    (new Comparator())
        ->iterations(100000) // 100K
        ->withoutData()
        ->compare([
            'rand' => fn() => rand(...$range),
            'mt_rand' => fn() => mt_rand(...$range),
            'random_int' => fn() => random_int(...$range),
        ]);

Та приятная часть разработки, на которую обычно не хватает времени.

Видимо, нам всем показалось.

А прототипируете в команде единомышленников? Потому что действительно "время разрабов-одиночек прошло".

Выжимка: java/kotlin, c#, c++, python, go, react/vue/angular, devops, data-science, scrum-masters, it hr.

Зачем вы всем рассказали, что проектировать может и обычный инженер, а не только специально обученный сертифицированный Нострадамус)

Обсуждения минусов я не предлагал, только лишь сопроводительный текст что можно сделать иначе. Думаю, до обсуждения критики мы пока не доросли)

Минусы бывают часто полезны. Я не в восторге от анонимной неконструктивной несодержательной критики. Хочешь поставить минус - будь добр напиши хотябы 140 символов осмысленного текста. Ладно уж, анонимно, но с потенциальной пользой.

А про контент - сложно разделить на одном ресурсе прожжёных технарей и остальную околомаркетинговую плеяду. Разве что завести маркер для истинно технарских статей, готовых к строгой критике придирчивых цензоров.

Этому багу несколько лет, и он был очень удобным)

Надо же попробовать чтобы понять. Я вот попроовал, понял не моё, теперь занимаюсь тем что нравится. Может однажды захочется попробовать ещё)

А зачем вы сравниваете null с boolean-значениями?

Null идеально подходит для обозначения отсутствия внешней связи. Используйте его по назначению, и тьма рассеется.

Ах этот дивный виртуальный мир.

В качестве отличного API могу предложить посмотреть что сделали ребята из Kinescope, не рекламы ради, а потому что помню какое получал удовольствие, реализовывая его у себя: всё очень логично, просто, а главное всё работает и соответствует доке.

https://documenter.getpostman.com/view/10589901/TVCcXpNM

А уже, правда через сторонний антиспам. Но вот как отрубить все смс - не нашёл. Ну и отдельная графа за звонки+смс в тарифе оператора - осталась.

Information

Rating
Does not participate
Registered
Activity