Каково влияние производительности трассировки в C# и ASP.NET?

Я буду использовать базы данных sqlite, где первичным ключом является идентификатор вида покемонов, а в таблице есть JSON, который будет десериализован. Я могу решить сделать его кэшируемым, но сейчас я не уверен, так как не знаю, с какой скоростью он будет работать.

12
задан John Bubriski 24 March 2009 в 13:32
поделиться

6 ответов

Да это окажет влияние производительности каждый раз, когда постоянная условная компиляция ТРАССИРОВКИ определяется во время сборки. Выполнение чего-либо имеет некоторый тип влияния :)

Относительно того, оказывает ли это значительное влияние на приложение. Очень маловероятно, что это как Проследило бы, разработан, чтобы быть выполненным и выполняется во многих производственных приложениях. Только злоупотребление функцией должно привести к noticable различию в производительности.

Но как всегда, не доверяйте мне, доверяйте профилировщику.

16
ответ дан 2 December 2019 в 05:15
поделиться

Большая часть потери производительности в этой части кода не находится в трассировке, а в конкатенации строк с помощью + оператор. Это делает некоторые неэффективные операции памяти, которые могут разбить операцию IO с точки зрения производительности. Я изменил бы его для использования чего-то как строка. Concat или класс StringBuilder (или строка. Формат в этом отношении).

3
ответ дан 2 December 2019 в 05:15
поделиться

И если трассировка запишет в текстовый файл, то она будет стоить больше, чем запись в консоль IMHO

1
ответ дан 2 December 2019 в 05:15
поделиться

Сообщения трассировки могут перейти к большому количеству различных мест. Можно добавить (или удалить), TraceListeners для Консоли, окна отладки VisualStudio, Файлов или журнала событий для именования некоторых. Можно даже создать собственное.

Кроме того, можно настроить Трассировку, чтобы не сделать что-либо при компиляции для Выпуска.

Таким образом влияние производительности использования Трассировки может варьироваться дико, полностью от нуля до полностью срывания Ваше приложение, в зависимости от того, какие слушатели активны. Большинство слушателей, тем не менее, имеет о влиянии, которое Вы ожидали бы. Это берет о такой работе для записи в файл, или базу данных или консоль, и Трассировка не добавляет так много, служебное относительно тех операций I/O-bound.

2
ответ дан 2 December 2019 в 05:15
поделиться

У меня пока нет очков репутации за комментарии, но я хотел бы сделать быстрое заявление об ответе Джонатана. Похоже, числа, которые я видел, показывают, что не имеет смысла использовать stringbuilder только для нескольких конкатенаций строк. Затраты на создание объекта stringbuilder перевешивают выигрыш в скорости конкатенации.

5
ответ дан 2 December 2019 в 05:15
поделиться

Я предполагаю, что Trace Source смотрит на TraceLevel своего переключателя, прежде чем пересылать сообщения слушателям. Таким образом, если мы сохраним значение TraceLevel переключателя по умолчанию на «Error», то накладные расходы на трассировку будут значительно сокращены, поскольку слушателям будут отправляться только трассировки «Error».

только предположение ... я еще ничего не измерял. Буду обновлять, если я это сделаю.

Обновление 2017 г. : кажется устаревшим, но довольно удобным способом отслеживания / регистрации информации на странице браузера / удаленно доступной .aspx в приложении asp.net.

https://msdn.microsoft.com/en-IN/library/z48bew18 (v = vs.71) .aspx

1
ответ дан 2 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: