MIX11: WP7 SD card I/O performance discrepancy, battery and agents tidbits

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.

7 insightful thoughts

  1. 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?

    1. No analysis. Update my post to clarify, it’s more of an open-ended discussion point.

      1. 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?

  2. 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…

Comments are closed.