Since Android can be installed on wide range of devices, I'm wondering how important RAM and the CPU speed are to the performance of a device. There are always tradeoffs when something is increased and another one decreased!

Is more RAM or a faster processor better for general browsing and less mulititasking? What if I'm interested in gaming or doing lots of things at once? Will more RAM make up for a slower processor or vice-versa?

BTW: Remember that the CPU clock is not the same as the CPU speed. More helpful metrics that CPU clock are Mflops, avrage milions instructions per second (MIPS) etc. Difference between Mflops and MIPS can be seen at some optimizations (e.g. JIT optimizations), because some processors have special instructions that allows you to compute mote at once. However, they aren't applied in native code unless the app has been compiled with support of these instructions.
–
v6akMar 8 '11 at 7:44

4 Answers
4

In the context of Android, more RAM means Android can keep more sleeping program in the RAM so they will be ready to be quickly resumed when you return back to the apps. More RAM means Android is going to spend less of its time killing and reloading apps from the internal memory/sd card, and instead spend more time doing actual work you care about. This means that more RAM usually give you better/faster task-switching. Also, more RAM means your homescreen is less likely to be killed; and you won't experience that 10-second-wait-that-feels-like-forever. Having more RAM also allows you to run complex apps that naturally requires a lot of memory, e.g. photo/video editor, complex games, etc.

A higher CPU is able to calculate things much faster, while this might look tempting at first, it is notable that most programs -- except for games and synthetic benchmark and possibly flash-heavy webpages -- are I/O-bound and not CPU-bound; in other word, most programs are waiting for network transmission, flash storage reads, DMA reads, touch event processing, etc to finish, instead of waiting for some calculations. In CPU-bound application, increasing CPU speed can mean less latency between touching the screen and the screen updating to reflect the touch event. However, up to a certain point, there will be no longer any noticeable benefit of adding even more CPU; beyond a certain point, the input turnaround will be much faster than our own brain's turnaround time (approx. 100-200ms) and we will not be able to perceive the benefit of adding even faster CPU. Also, note that input-to-output turnaround time depends on a large number of other factors, e.g. the latency of the cables, speed of the bus, etc. Second, having some extra CPU time to spare also means that Android can assign those spare CPU cycles to background processes, so background processes can run better.

In short, both are equally important; your own personal usage pattern will determine which is more valuable for you. If you generally stays in a single program and is sensitive to input-to-output latency then having faster CPU will be more valuable for you; if you constantly task switch between many different apps or if you need to run complex memory-hungry apps to open complex large files, then having extra RAM is going to be more valuable to you.

First of all, true multitasking (having multiple apps run) requires a faster CPU, so that all the processes can run at a decent speed. You are right that for all these apps to remain in memory, you need more RAM.

I have 512 MB RAM, and my processes only start getting killed if I run something that uses a ton like Angry Birds. On the other hand I have a 1 GHz processor and I never notice slowdowns regardless of what I'm doing (apart from Angry Birds bogging itself down during long plays).

If you're doing email, Twitter, Facebook, web, etc. then you probably want more RAM. If you want to play games then you need a decent amount of RAM, but the processor and graphics chip is going to be more important. In general.

Another important consideration is I/O speed. If you have a Samsung phone that uses RFS, install an EXT4 lagfix — you'll notice a huge improvement. If you're recording HD video you may want a faster SD card (we have questions about that), and so on.

Storage size is largely unrelated to performance, but you'll want to consider that as well. Many users kick themselves after installing a few apps and finding that they've run out of space. I highly recommend a device like my Vibrant, which has an excessive 2 GB internal (system+data) storage (and 14 GB internal SD, plus the external SD card).

I edited my question to make it less subjective.
–
satFeb 20 '11 at 17:13

3

Most of the time we are not truly "multitasking". We may have several apps running but the apps running in the background are usually not actively doing anything so the major issue is keeping them open which takes memory. If they are actively running, for example listening to streaming media and browsing the internet or playing a game then I'd say processor speed is more important (within the normal hardware standards, obviously having a fast processor is meaningless if you have 1kb of RAM).
–
MattFeb 20 '11 at 21:56

Matt, I was going to write something similar. However, I think that background tasks aren't usually CPU intensive. They can use some I/O and they can be I/O intensive in some cases (e.g. downloading files, copying files), but is seems unlikely that they will be CPU intensive. So, as mentioned in another post, CPU is probably more important for intensive single-taksing (e.g. games) and RAM is more important for intensive task switching.
–
v6akMar 8 '11 at 7:17

Well, music players are an exception: they can be CPU intensive and they are likely to run in the background.
–
v6akMar 8 '11 at 7:57

1

@v6ak: an I/O intensive background applications can potentially disturb the I/O of the foreground and in poorly written apps (e.g. apps that do I/O in the UI thread), this can also be a cause of poor responsiveness or lagginess, I don't know if Android prioritizes foreground I/O, though I believe it does.
–
Lie RyanMar 15 '11 at 11:04

In a phone most of the programs you will use are thinks like email, IM, web browser,…

This kind of apps does not need a powerful CPU, but given the fact that you will be using an Android Phone you will be running multiple applications at the same time which needs some extra CPU time, but more importantly, needs enough RAM memory to accommodate all the applications.

So, more than one or the other, the important thing in and Android phone balance. With a 2Ghz CPU and 512MB of RAM you will be wasting CPU power because the phone will not have enough memory to accommodate sufficient applications to consume that amount of CPU cycles. The same occurs with a 500Mhz CPU and 2Gb or RAM, the processor will not have enough cycles to execute enough applications to consume that amount of RAM.

So BALANCE is the thing to consider. A CPU at 1Ghz with 512 to 1Gb of RAM is a great combination. The same goes for a 600Mhz with 256Mb to 512Mb (a little underpowered for recent versions of Andorid), or for a new two cores 1Ghz CPU with 712Mb or more of RAM.

Given this considerations my recommendation will be to search for a phone with a 1Ghz or more CPU and 1Gb or more of RAM, this phone will be powerful enough to run all the applications you will need in the next 2 years that is the maximum period of time you will be using the phone giving the evolution rate of the mobile technology.