Android: характеристики Native / JNI-кода меняются с одного телефона на другой - PullRequest
1 голос
/ 25 октября 2010

Привет всем, у меня проблема с моей библиотекой JNI.Время выполнения одного и того же кода меняется с одного телефона на другой.Я думал, что это было только потому, что мы тестировали на старом телефоне, но недавно я запустил htc legend, и весь код jni был медленным ...

Я запускаю профилировщик и его разница между днем ​​и ночью: onв некоторых телефонах функции jni занимают от 15% до 20%, а на других телефонах - 40% и 50% для тех же условий ...

у кого-нибудь есть объяснение?

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Процессоры, конечно, не созданы равными; у них разные каналы, скорости, кэширование и тому подобное. Очевидное объяснение состоит в том, что является процессором.

Кроме того, общесистемные вещи могут повлиять на обработку - если, скажем, вы обрабатываете изображение, снятое камерой с помощью JNI, размер изображения может зависеть от устройства.

Кроме того, вы должны проверить, измеряете ли вы время нити и время настенных часов; если посмотреть на временные характеристики относительно частей кода, которые являются Java, вы можете увидеть относительное ускорение в Java (например, JIT в Android 2.2), а не замедление в JNI.

1 голос
/ 25 октября 2010

Если один из телефонов использует JIT (Just In Time) компилятор, добавленный в Foryo (2.2), он должен быть намного быстрее, чем ваши старые. Вы тестируете его, используя ту же версию Android?

Кроме этого Некоторые устройства лучше в математике с плавающей точкой, чем другие. Устройства, которые не реализуют FPU, будут эмулировать операции с плавающей запятой. Здесь вы можете найти хороший пост в блоге об этом: http://www.badlogicgames.com/wordpress/?p=71.

Существует множество источников о том, как реализовать систему с плавающей запятой, используя арифметику с фиксированной запятой: http://en.wikipedia.org/wiki/Fixed-point_arithmetic

...