В чем разница между методами профилирования на основе трассировки и выборки в Android Traceview? Я думал, что основанный на трассировке более точный, однако, похоже, что он может исказить фактические времена процессора, особенно если есть другие вызовы с функцией.Разница между профилированием метода на основе трассировки на основе трассировки и выборки на основе выборки и ее влиянием на сообщенные времена процессора
Например, я хочу оценить функцию A, которая имеет две реализации, такие как A-1 и A-2.
- У A-1 есть еще один вызов функции, такой как A-1-1.
- A-2 также имеет больше функций, таких как A-1-1, однако A-1-1 имеет также один вызов функции внутри него, такой как A-1-1-1.
Теперь я думаю, что профилирование на основе трассировки будет сообщать о более высоких значениях для A-2, потому что ему нужно отслеживать одну дополнительную функцию A-1-1-1, и это дополнительное использование процессора будет сообщено в процессорное время А-2. Я прав ?
Итак, возникает вопрос, использует ли метод на основе трассировки время на процессорное время, затрачиваемое на отслеживание дочерних методов, когда он сообщает о фактическом времени процессора родительской функции?
С другой стороны, проблема с методом на основе выборки заключается в том, что она не может улавливать очень легкие функции. Что делать, если моя функция занимает 0,2 миллисекунды процессорного времени, а интервал выборки составляет 1 миллисекунду? Я сделал несколько экспериментов с ним, и он не может поймать легкие вызовы функций. Любые идеи или ссылки на документацию об их различиях?
Последний вопрос: какой из них более точный для относительных сравнений?
На данный момент я продолжал отслеживать, поскольку он ловит все вызовы функций, не имеет значения, насколько быстро.Мне нужно это для сравнительного сравнения различных реализаций одной и той же функции, чтобы трассировка работала для меня. – utengr
Он работает для вас, хорошо. У меня никогда не было хорошего опыта отслеживания на любом языке. Я всегда делал оптимизацию не очень важной части большой системы. –
Я не использую его для оптимизации. Только для отчетов относительные времена процессора для различных алгоритмов внутри вызова функции. Например, что алгоритм А имеет 2% использования процессора, а В - 5%. – utengr