LINUX.ORG.RU

История изменений

Исправление PRN, (текущая версия) :

обработкой ошибок на месте, с накладными расходами равными нулю.

Если что этот код имеет не «нулевые расходы»

    if err := datastore.Get(c, key, record); err != nil {
        return &appError{err, "Record not found", 404}
    }

Пока err не известно конвеер продвинуться не может, но в современных процессорах это нивелируется спекулятивными вычислениями. И вполне возможна ситуация что простой вызов

datastore.Get(c, key, record)

может работать быстрее, пока исключение не кинет, но и тут есть нюансы))

то есть генерить исключение в функции и немедля его обрабатывать в вызывающей функции - это ахтунг.

Тебя кто-то заставляет так писать? К чему ты это написал? Сам придумал говнокод, сам его опроверг. Так ты сам с собой поговорить можешь))

Исходная версия PRN, :

обработкой ошибок на месте, с накладными расходами равными нулю.

Если что этот код имеет не «нулевые расходы»

    if err := datastore.Get(c, key, record); err != nil {
        return &appError{err, "Record not found", 404}
    }

Пока err не известно конвеер продвинуться не может, но в современных процессорах это нивелируется спекулятивными вычислениями. И вполне возможна ситуация что простой вызов

datastore.Get(c, key, record)

может работать быстрее, пока исключение не кинет, но и тут есть нюансы))

то есть генерить исключение в функции и немедля его обрабатывать в вызывающей функции - это ахтунг.

Тебя кто-то заставляет так писать?