Как определить, какой код в проекте/решении чаще всего используется?

Выезд: http://www.regular-expressions.info/refflavors.html Много regex информации о том сайте, и существует хорошая диаграмма, которая детализирует различия между Java & .NET.

6
задан Michael Donohue 5 November 2009 в 14:56
поделиться

7 ответов

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

Но инструменты динамического анализа (например, инструменты профилирования , которые либо полагаются на прозрачную инструментальную обработку кода, либо используют выборку) могут сказать вам, после одно или несколько «типичных» выполнений (вы указываете записи, которые вы считаете типичными), как часто выполнялась та или иная функция.

См. Профилирование (компьютерное программирование) в Википедии .

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

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

  1. прямой ответ при статическом определении
  2. Анализ в стиле O (N) в противном случае
Даже последнее было бы довольно сложно получить в целом правильно. Например, ему нужно знать сложность практически каждой функции в (огромной и постоянно расширяющейся) библиотеке .NET. Некоторые из них трудно даже охарактеризовать.

Например, сколько времени требуется для выделения блока памяти? Ну, обычно это почти постоянное время, но всегда возможно, что выделение может запустить цикл сборки мусора,

1
ответ дан 16 December 2019 в 21:42
поделиться

"Profiler" is what you're looking for; which you choose is up to you.

I've used HP's Diagnostic Server to do this, although it'd cost money. It'll tell me what methods are called how many times, and the average and worst-case time spent in them.

As an important safety tip, running a profiler will slow down the execution of your code; it's not ideal for a long-term installation into a production environment.

1
ответ дан 16 December 2019 в 21:42
поделиться

Покрытие кода кажется вам тем, что вам нужно.

NCover - популярный инструмент покрытия кода для .NET, если вы можете себе это позволить .

1
ответ дан 16 December 2019 в 21:42
поделиться

Если я правильно понял вопрос, вы ищете профилировщика. Попробуйте EQATEC Profiler . Это бесплатно.

Первоначально он предназначался для профилирования приложения перед отправкой (для обнаружения узких мест путем измерения времени выполнения методов и т. Д.), Поэтому я не уверен, подходит ли он для приложения в продуктивной среде. По крайней мере, он изменяет ваш код для целей профилирования, а это может быть нежелательным. Вы должны это проверить.

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

Если покрытие - это не то, что вы ищете, вы можете использовать две вещи:

  1. Как предложено профилировщиком и запускать сценарии прогнозного тестирования.
  2. Используйте счетчики производительности, что приведет к более постоянному решению. Их довольно сложно реализовать, но они полезны для диагностики разницы в производительности путем анализа отчета счетчиков. Один из способов реализовать их - обернуть границы и управлять счетчиками из этой оболочки. Имейте в виду, что гораздо проще интегрировать в новый проект, чем в существующий.
0
ответ дан 16 December 2019 в 21:42
поделиться

, где они перехватывают подкласс java.lang.Exception, регистрируют ошибку и повторно генерируют подкласс как java.lang.Exception. Мне нужно убедить их, что им нужно прекратить писать подобный код.

Я согласен, что им следует использовать другую тактику, но по другим причинам. Нет особого смысла в перехвате исключения только для того, чтобы зарегистрировать его и повторно выбросить.

Альтернатива: не перехватить исключение и позволить некоторому более высокому коду (например, фильтру Java EE, или try / catch в вашем основном ( ) метод) перехватить и записать все неперехваченные исключения. Затем вы гарантируете, что каждое исключение регистрируется только один раз, и вы знаете, что все неперехваченные исключения будут регистрироваться.

Если вам нужно добавить дополнительную информацию к исключению, перехватите его, измените сообщение и повторно выбросьте. Обычно для этого я использую RuntimeException: SD C # Test Coverage Tool

Если вы хотите увидеть , как часто он используется: SD C # Profiler Tool

1
ответ дан 16 December 2019 в 21:42
поделиться
Другие вопросы по тегам:

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