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

Leave a Reply