Android performance 1: The G1
We are starting to develop on Android. The first Android device, of course, is the HTC/T-Mobile G1. We got one of the units this week, and I am just starting to look into exactly how fast the G1 runs. Performance is a hard thing to measure, but I wanted to start blogging about it in the hopes we can start a discussion and learn more about how to best measure and optimize performance on Android devices.
The best way to start, I think, is to just list the hardware specifications (from Wikipedia).
- CPU: Qualcomm MSM7201A
- 528 MHz. ARM11 (same family as iPhone).
274MHz ARM9 coprocessor (not really “dual core” as is commonly claimed).
Java hardware acceleration but not on the Dalvik VM (Android). - GPU: (Shared with CPU)
Capable of 4M triangles/sec.
Capable of hardware-based image signal processor and JPEG encoder. - Video Decoding:
Chip supports 30fps VGA in
MPEG-4, H.263, H.264, Windows Media® and RealNetworks® - Video Encoding: (Not yet available on Android!)
Chip supports 30fps VGA in
MPEG-4, H.263 and H.264 - Network speed:
Supports T-Mobile UMTS (3G) 800/1700/2100 MHz
Possibly supports AT&T UMTS (3G) 850/1900/2100 MHz. This disassembly shows the RTR6285 radio chipset, which supports both 3G platforms. However, there are two power amplifiers — one at 2100 MHz, and one at 1700 MHz (T-Mobile frequencies). Nevertheless, I don’t think the 1700 MHz amplifier attenuates 1900 MHz. Look at the datasheet and see what you think. So AT&T 3G would probably have a reduced range, but I think you could make it work.
There are a few open questions I’d like to answer related to this specification list. Can the G1 support AT&T 3G (see above)? Does the Android JVM benefit from the CPU’s Java hardare acceleration? Does the JPEG encoding (Bitmap class) on G1 tap into the hardware?
We should also run a series of benchmarks and compare the Qualcomm processor’s Java performance, to, say, an Intel Core 2, for a number of tasks. That way we can roughly estimate how fast something will run on a G1 before actually porting and deploying. If you’ve seen any benchmarks like this, let me know, so we don’t reinvent the wheel!
Next time (Android performance 2):
- Benchmark for a simple array-indexing loop.
-
snypez
-
http://www.1cheapmichaelkorswatchesforsale.co.cc Agrippa
