virus_forever
@virus_forever

Как ускорить декодирование строки в бинарный формат на PHP?

Добрый день!

С API сервера приходит документ в виде закодированной строки. Строка имеет некоторое количество групп цифр по 3 штуки, соответствующим 1 байту. Эту глупость никто менять не будет.

59db61ab9514b173799695.png

Имеющийся код на локальной машине с i5 3 поколения и включенным XDebug работает ЖЕСТЬ как медленно. Декодирует документ примерно за 5-6 минут (!!!).

public function DecodePolicy($Value)
    {
        $length = strlen( $Value );

        $triple_char = '';
        $triple_char_length = 0;

        $buffer = '';

        for ($i = 0; $i < $length; $i++)
        {
            if ( $triple_char_length == 3 )
            {
                $byte = intval( $triple_char );

                $buffer = $buffer . chr( $byte );

                $triple_char = '';
                $triple_char_length = 0;
            }

            $char = $Value[$i];

            $triple_char = $triple_char . $char;
            $triple_char_length++;
        }

        return $buffer;
    }


Как это дело можно оптимизировать? И можно ли оптимизировать вообще?
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
сразу разбить входные данные по 3 цифры одним из тонны способов.
И сократить цикл в 3 раза моментально.

Ну а дальше посмотреть по ходу дела.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@PapaStifflera
Родился, вырос...
Вот это подойдет?
Ответ написан
SerafimArts
@SerafimArts
Senior Notepad Reader
Для начала отключить xdebug, есть подозрения, что тогда ваш код ускорится раза в 3-4 (у меня в жизни был случай, когда ускорение происходило с 11 минут до 30 секунд, правда в тестах).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы