At a MIX11 “Windows Phone Architecture: Deep Dive” session yesterday, Microsoft’s Istvan Cseri revealed a number of interesting tidbits around the Windows Phone 7 platform that I found notably interesting.
The first was the scope of input & output performance discrepancy for SD cards inside Windows Phone 7s. As I understood it, this affects even “approved” cards that ship with the device. Although it wasn’t clear if these synthetic benchmarks translate to much real-world performance, I assume this explains some of the minor performance inconsistencies between devices.
Next was a break-down of the battery usage by component on the device. Even though it wasn’t a secret video decoding, 3G and WiFi are some of the biggest consumers of battery power, the numbers reveals exactly how much difference there is between the each of them. As a surprise to me, neither the GPS or display consumed as much power as I thought they did.
Finally, just as foreground applications on Windows Phone 7 have resource budgets limited by the operating system, background agents do too. It turns out in normal situations, live agents have a maximum allocation of 10% CPU and 5MB of memory which may be a conservative limit that I’m not sure if developers will hit if they try to do anything more than simple web requests. We’ll have to see I guess.
I think there is a great deal a developer can do with 5MB, considering the context. Is there any analysis behind saying that 5MB is conservative?
No analysis. Update my post to clarify, it’s more of an open-ended discussion point.
I do wonder if this will bring back some of the olden days of programming where developers find ways of cramming incredible functionality into as little space as possible. I think the real constraint will be CPU. 10% of an ARM CPU is probably going to run like a 100Mhz Pentium, so things like string processing might start to go back to C-style char array coding.
I do wonder if they fine tuned the GC for agents as well. I’d imagine they would crank up the collection frequency – or provide actual deterministic collection?
remember the agent is not a full app, it just shares the sandbox and isolated storage so there’s no need for it to have a large memory footprint – it’s the rought equivalent of a sub-process…
Why does Audio consume that much?