|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
||||||
Пустые дебаг методы vs полное выпиливание с проекта26.01.2017, 20:57. Показов 2977. Ответов 48
Метки нет (Все метки)
Добрый вечер,
Моё мнение: если макрос - то особо не поиграться с шаблонами и отсутствие статического проверки типа если методы пустышки - то будет ли создаваться под них стек и вызов, или компилятор с оптимизирует всё это дело?
0
|
||||||
| 26.01.2017, 20:57 | |
|
Ответы с готовыми решениями:
48
Пустые методы в перечислении java.util.concurrent.TimeUnit Выпиливание экземпляра класса самим собой |
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 26.01.2017, 21:36 | ||
|
1
|
||
|
Ушел с форума
|
|
| 26.01.2017, 21:55 | |
|
Лично мне больше нравится подход Log1: проверки типов остаются, функции и методы никуда
не исчезают и можно особо не волноваться на счет случайных побочных эффектов, которые после таких удалений вдруг могли бы возникнуть. Перфоманс если и страдает, то очень незначительно. В большинстве случаев компилятор будет просто выбрасывать пустые вызовы. На счет вызова функций из других единиц трансляции - здесь тоже есть возможность оптимизации, например MS C/C++ Compiler такое умеет делать и делает достаточно давно.
1
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 26.01.2017, 22:43 | |
|
0
|
|
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 26.01.2017, 22:45 [ТС] | |
|
hoggy, не пойму о чём вы)
0
|
|
|
Любитель чаепитий
|
|
| 27.01.2017, 05:44 | |
|
ИМХО, что как-нибудь так лучше смотрелось бы:
LOG(DBG) << "open file"; LOG(ERR) << "can't open file"; LOG(WRN) << "empty data"; И т.д. Возможно, что об этом и говорит господин hoggy, но это не точно!
0
|
|
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 27.01.2017, 10:04 | ||
|
Можно написать программу которая просто перед продакшеном пройдется по всем файлам проекта, откроет эти файлы и сделает replace вызовы log на пустую строку и не придется уродовать код #if !defined(PRODUCTION) - ами при сложных записях можно воспользоваться регулярными выражениями либо тупо копипастить себе куда нибудь в файлик эти сложные записи и реплейсить их когда придет время
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||||||||
| 27.01.2017, 11:03 | ||||||||||||||||||
|
однако в режиме выключенных логов, у вас тут получится передача данных в методы-пустышки. что в общем то не бесплатно и совершенно напрасно.
даже очень затратные проверки и не бояться за производительность. ведь в релизе все что под ассертом будет выпилено из компиляции. вот точно так же и с логами. при отключении логов, не должно быть издержек на подготовку и транспортировку исходных данных
зачастую ещё нужно сформировать логируемый текст на основе исходных данных:
которая будет дергать кучу всяких геттеров, запрашивать исходные данные, переводить числа в строки и тд, и если логи выкл, то получим совершенно бесполезные траты на ровном месте. а так - макрос схлопнулся, и никаких затрат.
4
|
||||||||||||||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 27.01.2017, 11:39 | ||
|
Вообще, то чем вы сейчас занимаетесь нужно делать с помощью Unit тестов. И проблем таких не будет.
И профит от наличия тоестов будет большой, если программуля серьезная. Логи как раз таки больше нужны в продакшене а не в девелопменте Добавлено через 8 минут
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 27.01.2017, 11:50 | ||||
|
все что в скобочках макроса превратится в пустоту (не войдёт в компиляцию)
1
|
||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 27.01.2017, 11:55 | |||
|
0
|
|||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|||||||
| 27.01.2017, 12:20 [ТС] | |||||||
|
Добавлено через 5 минут
compact
0
|
|||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 27.01.2017, 12:46 | ||
|
1
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 27.01.2017, 12:57 | |||||
|
область применения дебажных логов такая же, как и у обычных ассертов. \ Добавлено через 57 секунд
0
|
|||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||
| 27.01.2017, 13:33 | |||
|
По сути лог это сохранение определенного действия для дальнейшего его анализа (например, не удалось занять порт на определенной машине просто потому что его занял кто-то другой). На машине девелопмента такая информация не очень полезна. Я об этом, логи решают приблизительно такие задачи. Что касается отладки, то для этого придумали отладчик Если же что-то касается проверки работоспособности системы, особенно если есть много взаимодействий между разными компонентами, с этим насколько я понимаю и связан вопрос автора, для этого как правило пишут юнит тесты которые могут существовать как независимый проект более того, при расширении функционала достаточно будет просто запустить тест 1 раз и понять, слетело ли что в результате правок то есть почти тоже самое только как отдельный независимый проект, и более подходящий для решения подобных задач Добавлено через 9 минут
0
|
|||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||
| 27.01.2017, 14:06 | |||
|
Добавлено через 1 минуту
0
|
|||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
||
| 27.01.2017, 14:13 | ||
|
А баг означает что в программе есть кривизна. Тут уже нужны прямые руки и хороший отладчик, и не помешает автоматизация проверок на баги, что и было предложено в качестве юнит тестов...
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 27.01.2017, 14:49 | ||
|
Да, логи, в первую очередь, отражают состояние системы. Но не всегда пользователя интересуют подобные сведения. А вот для отладки они всегда могут быть полезны.
0
|
||
|
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
|
|
| 27.01.2017, 15:41 [ТС] | |
|
0
|
|
| 27.01.2017, 15:41 | |
|
Помогаю со студенческими работами здесь
20
Посоветуйте методы раскрутки для белого проекта Дисковод не читает пустые dvd-r/rw и пустые cd-rw диски. дебаг Дебаг процедуры
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|