locked
Very poor performance on physical Windows Phone devices RRS feed

  • Question

  • Since monday we have physical windows phone devices arrived at the development department and i have tested our syncfx app on them. Its quite schocking to find a very poor performance compared to the windows phone emulator.

    For example, syncing ~1MB of data takes 7 seconds on the emulator (windows phone emulator synching with localhost) but 1 minute and 22 seconds on the device (HTC Mozart connected via USB, syncing with localhost).

    Also, restoring these ~1MB of data into IsolatedStorageOfflineContext takes 2 seconds on the emulator but 17 on the device.

    Is there anything i can do to tweak these miserable results? Please tell me that future CTP updates or at least the RTM will not suffer the same.

    Tuesday, November 9, 2010 2:56 PM

Answers

  • In a more detailed analysis and internal discussion with mahjayar both of us agreed that there is a significant difference in performance between the emulator and a physical device, of course. This is mostly caused by the limited capabilities of the device compared to the full blown power of a developer's workstation.

    A simplified scenario with 870 items (1 MB) performed as follows:

    Scenario

    Time in seconds Emulator

    Time In seconds Phone

    Diff

    Initial download

    1.87

    7.84

    319.25%

    Load Cold boot

    1.1

    8.612

    682.91%

    Explicit Data Bind On explicit Load

    1.9

    14.5

    663.16%

    Implicit Load + (ALL data) with DataBind

    3.2

    23

    618.75%

    Implicit Load + (All data)with array

    2.9

    23

    693.10%

    Implicit Load + 10 items with DataBind

    1.15

    8.9

    673.91%

    I have been told that the SyncFX team is investigating different approaches to hopefully cut down times required for serializing/deserializing IsolatedStorageOfflineContext.

    Suggested best practices for application developers is to carefully design their apps, make use of explicit loading of contexts and also make sure to use common databinding techniques such virtualizing ListBox.

    • Marked as answer by mjayaram Thursday, November 18, 2010 7:22 PM
    Thursday, November 18, 2010 8:23 AM

All replies

  • M.Bi,

    You have my email address. Can you please send us some details on the following.

    # of tables

    Type of properties on the types. (Lots of byte arrays or long strings)

    # of batches it takes to download the data.

     

     


    Maheshwar Jayaraman - http://blogs.msdn.com/mahjayar
    Tuesday, November 9, 2010 6:20 PM
  • At the risk of asking a stupid question, the performance difference isn't just because the phone is using a wireless data connection and the emulator is using a much faster network connection via the host PC, is it?
    Wednesday, November 10, 2010 2:57 AM
  • Mahjayar, Thank you so much for constantly taking care!
    Wednesday, November 10, 2010 7:25 AM
  • MRLacey,

    That was my initial gut reaction to this. M.BI has provided some debug tracing info and I will have him post the update once we debug this and get to a root cause. Needless to say performance is a very key goal for us for the RTM release.


    Maheshwar Jayaraman - http://blogs.msdn.com/mahjayar
    Thursday, November 11, 2010 7:03 PM
  • In a more detailed analysis and internal discussion with mahjayar both of us agreed that there is a significant difference in performance between the emulator and a physical device, of course. This is mostly caused by the limited capabilities of the device compared to the full blown power of a developer's workstation.

    A simplified scenario with 870 items (1 MB) performed as follows:

    Scenario

    Time in seconds Emulator

    Time In seconds Phone

    Diff

    Initial download

    1.87

    7.84

    319.25%

    Load Cold boot

    1.1

    8.612

    682.91%

    Explicit Data Bind On explicit Load

    1.9

    14.5

    663.16%

    Implicit Load + (ALL data) with DataBind

    3.2

    23

    618.75%

    Implicit Load + (All data)with array

    2.9

    23

    693.10%

    Implicit Load + 10 items with DataBind

    1.15

    8.9

    673.91%

    I have been told that the SyncFX team is investigating different approaches to hopefully cut down times required for serializing/deserializing IsolatedStorageOfflineContext.

    Suggested best practices for application developers is to carefully design their apps, make use of explicit loading of contexts and also make sure to use common databinding techniques such virtualizing ListBox.

    • Marked as answer by mjayaram Thursday, November 18, 2010 7:22 PM
    Thursday, November 18, 2010 8:23 AM
  • I would like to post the wiki for best practices on Windows Phone 7 app development. https://wp7dev.wikispaces.com/. Use this as a resource when developing your phone apps.


    Maheshwar Jayaraman - http://blogs.msdn.com/mahjayar
    Thursday, November 18, 2010 7:20 PM