Pull to refresh
-3
0
Павел Омельченко @pOmelchenko

php-developer

Send message

Xdebug это замечательно, но… всречный вопрос на ваш первый же вопрос в статье: php -a Чем не подошел?

https://www.php.net/manual/ru/features.commandline.interactive.php

Этот трэд можно продолжать до тех пор, пока сам трэд не станет полным по Тьюрингу, но есть ли в этом какой-либо практический смысл?)

Minecraft и Factorio тоже могут быть полными по Тьюрингу, но делает ли это их языками?

Arduino это разве язык? Там же плюсы с оберткой над низкоуровневыми и регистровыми конструкциями, читай фрэймворк

а cmake? Это же тоже не яп, а система сборки.

Почему бы не упомянуть xml, html, css, yaml, ini, json и toml, или эти "языки" автор не использовал?

Как-то я не заметил того момента, когда на хабре стало можно постить ссылки на варезные ресурсы.

Я отвечу коротко - да просто так, потому что могу

В конце статьи )

Лучше бы эти пользователи делом занялись. 9200 ученых могли бы придумать как утилизировать аккумуляторы, вместо сидения в соцсетях)

у меня не было желания спорить, но точки с запятыми в выводе результат в поток — роли не играют конкретно в этом случае. Тем не менее, если посмотреть ОП-коды, да, запятые ведут к "эхо" для каждого аргумента переданному через запятую.

https://3v4l.org/bZHPv - пример (который был выше) с точками
https://3v4l.org/6cU5f - тот же код, но с запятыми

В обоих случаях погрешность в 32 байта.

Вопрос в том, как себя memory_get_usage ведет. Ощущение такое, что первый вызов инициализирует счетчик, который дальше по коду переиспользуется. В случае присвоения — мы в переменной получаем результат до того как будет инициализирована переменная, а дальше получаем ту самую погрешность в 32 байта.

Жаль что у меня это только на уровне догадок, как уже выше писал, компетенций в СИ у меня малова-то чтобы свободно читать исходники php

типа:


<?php

$mem = memory_get_usage(); // запишем в новую переменную значение памяти без учета переменной

и


<?php
echo memory_get_usage(); // снача стартуем "счетчик" и выводим в поток
$mem = memory_get_usage(); // потом записываем значение... почему тут идет учет переменной, и есть загадка :)

Кстати, просто вызов функции в никуда — не помогает в приведении результата к 0. Так что буфер вывода вполне может быть одним из путей к верному ответу.

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

Запятые не играю роли, в исходном примере заменил printf() и запятые в echo:

<?php

function doSmth(int $mem): void {
  $array = range(0, 99);
  echo 'memory in function: ' . memory_get_usage() - $mem . PHP_EOL;
}

// Сначала инициализируем переменную $mem
$mem = memory_get_usage(); echo 'init $mem' . PHP_EOL;
echo 'memory before use: ' . memory_get_usage() . PHP_EOL;

doSmth($mem); 
echo 'memory after use: ' . memory_get_usage() - $mem . PHP_EOL;
➜  ~ php index.php
init $mem
memory before use: 396096
memory in function: 2648
memory after use: 32
➜  ~ 

Теперь меняем местами строку в которой инициализируем $mem и следующую, где выводим значение memory_get_usage()

<?php

function doSmth(int $mem): void {
  $array = range(0, 99);
  echo 'memory in function: ' . memory_get_usage() - $mem . PHP_EOL;
}

// Сначала выводим значение memory_get_usage()
echo 'memory before use: ' . memory_get_usage() . PHP_EOL;
$mem = memory_get_usage(); echo 'init $mem' . PHP_EOL;

doSmth($mem); 
echo 'memory after use: ' . memory_get_usage() - $mem . PHP_EOL;
➜  ~ php index.php
memory before use: 396064
init $mem
memory in function: 2616
memory after use: 0
➜  ~ 

https://3v4l.org/bZHPv/vld — Пример где сначала инициализируем переменную
https://3v4l.org/039Fh/vld — Пример где сначала выводим значение memory_get_usage

https://www.diffchecker.com/Zn9rPop5/ — diff op'кодов

С unset функции я тоже был не прав. Видимо тайна кроется в том где в коде будет вызвана memory_get_usage в первый раз. Если переместить определение переменной $baseMemory до определения функции, то в расчете будет 0.

Смотрю в исходники, но мало что понимаю, всё же в С у меня экспертизы недостаточно

ей-богу не знаю, что за 32 байта остаются занятыми, должно быть 0 (напишите, если вы в курсе в комментариях)

Переменная $baseMemory...

<?php

function doSmth(int $baseMemory): void {
  $array = range(0, 99);
  printf('memory: %s%s', memory_get_usage() - $baseMemory, PHP_EOL);
}

$baseMemory = memory_get_usage();

echo 'memory before: ', memory_get_usage(), PHP_EOL;
doSmth($baseMemory);
echo 'memory: ', memory_get_usage() - $baseMemory, PHP_EOL;
unset($baseMemory);
echo 'memory after: ', memory_get_usage(), PHP_EOL;
memory before: 388224
memory: 2648
memory: 32
memory after: 388224

..., но был не прав и присоединяюсь к вопросу.

PS: Это таки была функция. Если ее сделать анонимной и после использования удалить как и переменную, то потребление памяти сократится до того что было в самом начале

И вы снова играете в одни ворота. Приходя к таким борцунам за экологию я тоже хочу проводить анализ всех тех с кем меня свяжут узы трудового договора. Почему я должен о себе на каждом этапе собеседования рассказывать максимально искренне, а в ответ получаю компанию в виде котов в мешке? котов с которыми я познакомлюсь после подписания договора. Нет! Хотите играть в экологичность, играйте в обе стороны. Показывайте анкеты всех сотрудников с которыми, абстрактный, я буду работу работать! Я хочу принять обоснованное решение до подписания бумажек о том что эти вот «персонажи» мне подходят. Всецело и полностью.

И да, испытательный срок — работает в обе стороны, соискатель может уволиться по более короткому сроку потому что «нет, с ними мне не по пути», даже если те с кем общался на собеседованиях — полностью устраивали.

Какая-то корпоративная евгеника, а не экологичность…

Автор, а поясните вот такой момент.

Так делают все, когда знакомятся с новым человеком.

Лично я никогда не занимаюсь таким, ну разве что в редких случаях. Например я проверял рекрутера по соцсетям только 1 раз. Но суть вопроса в другом. Ваши методы это игра в одни ворота. Вы вытаскиваете всё дерьмо о соискателе во время поиска, а что в замен? Вы даете полные досье на себя, на тех к кому вы ищите нового сотрудника? Информацию о непосредственном руководителе, о коллегах в команде. Где гарантии что они экологичны для соискателя?

Возьму на вооружение сей метод версионирования)

Товарищей можно и за полгода предупреждать, а вот заявление на стол положит за 2 недели до, как регламентировано к ТК

Вы автор первой или второй истории? И да, хожу и пытаюсь решить свои проблемы. Так что я на своем опыте комментарии оставлял

Information

Rating
Does not participate
Location
Подольск, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior
PHP
Laravel
Symfony
PostgreSQL
MySQL
Nginx
Git
Docker
Linux