@Bone

Golang. Что работает быстрее strings.Contains или json.Unmarshal?

Здравствуйте! У меня есть клиент, который отправляет запросы к api и возвращает "сырой" (просто текст) ответ. Ответы от api приходят в виде json. Иногда api может возвращать ошибку, условно говоря, в таком виде {"error_code": 1, "error_msg": "some error"}. Клиент должен понять, что вернулась ошибка и перенаправить ответ от api в канал для ошибок.
Очевидное решение сделать в клиенте json.Unmarshal и проверить существование поля error_code, но, насколько я понимаю, это не самая легкая операция, тем более что ответы от api могут содержать очень длинные json'ы.
Что если искать вхождение error_code в тексте с помощью strings.Contains и только если оно найдено, тогда делать json.Unmarshal. Поможет ли это повысить производительность?
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
Производительность это повысит, strings.Contains работает гораздо быстрее, чем json.Unmarshal
Но надежность понизит, ибо error_code будет искаться везде, это не обязательно будет имя поля.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
2ord
@2ord
продвинутый чайник
Согласен с Александр Павлюк .
Если хочется сэкономить на случаях, когда ответ достаточно увесистый, а достаточно лишь получить некоторые поля, тогда можно попробовать https://github.com/tidwall/gjson
Ответ написан
Ваш ответ на вопрос

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

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