Я буду использовать базы данных sqlite, где первичным ключом является идентификатор вида покемонов, а в таблице есть JSON, который будет десериализован. Я могу решить сделать его кэшируемым, но сейчас я не уверен, так как не знаю, с какой скоростью он будет работать.
Да это окажет влияние производительности каждый раз, когда постоянная условная компиляция ТРАССИРОВКИ определяется во время сборки. Выполнение чего-либо имеет некоторый тип влияния :)
Относительно того, оказывает ли это значительное влияние на приложение. Очень маловероятно, что это как Проследило бы, разработан, чтобы быть выполненным и выполняется во многих производственных приложениях. Только злоупотребление функцией должно привести к noticable различию в производительности.
Но как всегда, не доверяйте мне, доверяйте профилировщику.
Большая часть потери производительности в этой части кода не находится в трассировке, а в конкатенации строк с помощью + оператор. Это делает некоторые неэффективные операции памяти, которые могут разбить операцию IO с точки зрения производительности. Я изменил бы его для использования чего-то как строка. Concat или класс StringBuilder (или строка. Формат в этом отношении).
И если трассировка запишет в текстовый файл, то она будет стоить больше, чем запись в консоль IMHO
Сообщения трассировки могут перейти к большому количеству различных мест. Можно добавить (или удалить), TraceListeners для Консоли, окна отладки VisualStudio, Файлов или журнала событий для именования некоторых. Можно даже создать собственное.
Кроме того, можно настроить Трассировку, чтобы не сделать что-либо при компиляции для Выпуска.
Таким образом влияние производительности использования Трассировки может варьироваться дико, полностью от нуля до полностью срывания Ваше приложение, в зависимости от того, какие слушатели активны. Большинство слушателей, тем не менее, имеет о влиянии, которое Вы ожидали бы. Это берет о такой работе для записи в файл, или базу данных или консоль, и Трассировка не добавляет так много, служебное относительно тех операций I/O-bound.
У меня пока нет очков репутации за комментарии, но я хотел бы сделать быстрое заявление об ответе Джонатана. Похоже, числа, которые я видел, показывают, что не имеет смысла использовать stringbuilder только для нескольких конкатенаций строк. Затраты на создание объекта stringbuilder перевешивают выигрыш в скорости конкатенации.
Я предполагаю, что Trace Source смотрит на TraceLevel своего переключателя, прежде чем пересылать сообщения слушателям. Таким образом, если мы сохраним значение TraceLevel переключателя по умолчанию на «Error», то накладные расходы на трассировку будут значительно сокращены, поскольку слушателям будут отправляться только трассировки «Error».
только предположение ... я еще ничего не измерял. Буду обновлять, если я это сделаю.
Обновление 2017 г. : кажется устаревшим, но довольно удобным способом отслеживания / регистрации информации на странице браузера / удаленно доступной .aspx в приложении asp.net.
https://msdn.microsoft.com/en-IN/library/z48bew18 (v = vs.71) .aspx