Android traceview - поведение на Android 3.2 против 4.1
Этот вопрос не о значении столбцов данных, представленных traceview - я думаю, что понимаю это.
Я заметил пару вещей, когда просматривал следы в traceview, снятые на устройствах Android 3.2 и Android 4.1. Мой вопрос заключается в том, являются ли это известными улучшениями, которые были сделаны для более новых выпусков Android, или они являются ограничением устройства, или они не являются артефактами, но на самом деле имеют смысл.
Два устройства / ОС, которые я сравниваю
- Samsung Galaxy Tab 10.1 с 2 ядрами, работающий под управлением Android 3.2
- Планшет Google Nexus 7 с 4 ядрами, работающий под управлением Android 4.1
Первое, что я заметил, это то, что для трасс, захваченных на Samsung Galaxy Tab с Android 3.2, нет столбцов "Real Time", только столбцы "CPU Time". Кто-нибудь знает почему?
Во-вторых, я заметил, что, хотя Samsung Galaxy Tab с Android 3.2 имеет два ядра, строки активности потоков трассировки для снимков, взятых из Samsung Galaxy Tab, всегда показывают только один поток, запущенный в любой конкретный момент времени. Принимая во внимание, что для Google Nexus 7 несколько потоков работают одновременно.
Приложение, работающее на обоих устройствах, является тестовым приложением, которое запускает некоторые потоки, а затем каждый поток, включая основной поток пользовательского интерфейса, зацикливается на некоторое время для вычисления последовательности Фибоначчи. Нет причин, по которым два из этих потоков не могут работать одновременно на Samsung Galaxy Tab или любом другом устройстве с 2 ядрами. Более того, время, затрачиваемое на выполнение фиксированного количества вычислений, примерно одинаково для каждого потока, когда есть 2 потока, а когда есть только 1 - поэтому 2 потока должны действительно выполняться одновременно, как и ожидалось. Затем, когда на 2-ядерном устройстве есть 3 потока, время, необходимое для расчета каждого потока, увеличивается на 50%, что является именно тем, что я ожидаю.
Итак, я думаю, что это всего лишь ограничение захвата трассировки на Samsung Galaxy Tab 10.1 под управлением Android 3.2. На этом устройстве для "настоящих" приложений с большим количеством вызовов трассировка, по-видимому, показывает, что два потока работают одновременно, но если я полностью увеличу масштаб, активность фактически перемежается, и никогда не отображаются два потока как активные одновременно.