Wednesday, October 19, 2011

The popularity of TombstoneHelper

A few weeks ago, as you're probably aware, Justin Angel published an analysis of the apps available in the marketplace which included a breakdown of 3rd party libraries actually in use.

Down at number 26, is my Tombstoner helper library, which was apparently being used in 307 (or about 1% of all) apps.

It is of course very flattering to know that it is being used so widely and helping developers improve their apps. What I find interesting is how it compares with some of the other libraries available. There are a number of other libraries which have much higher download numbers (both in Codeplex & NuGet) and yet are much lower in the list. This shows that you can't take download numbers to strongly. It's actual usage that counts.

The sad thing is that with the forthcoming encryption of XAPs such analysis of the marketplace in the future will not be possible. :(

BTW. I am still planning on another version of the library. Stay tuned.

13 comments:

  1. I have a listbox (in windows phone 7) with a lot of controls inside(Border, checkbox, image, and textblock) when i bind data to it, it is a very slow to show in pivot control, Can in guide me how to improve perform? Thanks (Sorry for my english very bad)

    ReplyDelete
  2. @vodka

    There are 2 things which can affect Listbox load performance: the complexity of the datatemplate; and the number of items you're adding.

    Reducing the complexity of the template may be possible depending on your requirements.

    If you can't get away with actually having a smaller number of items in your list, you should look to virtualise the list so that it's only necessary to render the template for a smaller number of items.

    ReplyDelete
  3. @Matt Lacey,
    Thanks you to reply. I try to make DataTemplate smaller and load number of items less than. Thanks you agian :D

    ReplyDelete
  4. Oh, I used a lot of IValueConverter, its make Listbox slower?

    ReplyDelete
  5. @Vodka
    Yes, Converters can also affect performance.
    In the past I've improved things by adding extra properties to the ViewModel which have the conversions applied. This seems to be faster.

    ReplyDelete
  6. @Matt Lacey
    How do you speed up to select data from database (SQL CE), I take two seconds to get 50 records. You have some tips ? This is my first time I write a programming with WP, it is difficult to start.

    ReplyDelete
  7. @Vodka
    There are lots of reasons for a database lookup to perform slowly. Things that could affect it include: size of database; size of rows; number of records being returned; indexes; types of data; complexity of query; ... the list goes on.

    Can you provide an example? And maybe post it at http://stackoverflow.com/

    There should be no need for it to take that long to read the rows, depending on what you're doing. You may get some tips from http://mobileworld.appamundi.com/blogs/andywigley/archive/2011/12/14/windows-phone-linq-to-sql-and-data-virtualization.aspx

    ReplyDelete
  8. Thanks for your helpful advice. I bother you again :D, do you have some tips for smooth scrolling Listbox. I read a lot of guides for this issue. LazyListbox,Deferred Load Listbox but they is not good for me :(, my listbox do not have big images, but scrollvier is not smooth...

    ReplyDelete
  9. @Vodka
    Having items of a consistent size (i.e. not a dynamic height) and having a simple itemtemplate would be my first tips for trying to create a smooth experience.

    ReplyDelete
  10. Hi Matt Lacey
    i use this code










    it is better than use normal listbox...
    But i have a another big issue, i add ContextMenu, with items are near ApplicationBar, ContextMenu is obscured...

    ReplyDelete
  11. "Grid"
    "Grid.RowDefinitions"
    "RowDefinition Height="*" /"
    "/Grid.RowDefinitions"
    "ScrollViewer"
    "StackPanel"
    "ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled"""/ListBox"
    "/StackPanel"
    "/ScrollViewer"
    "/Grid"

    ReplyDelete
  12. @Vodka
    In that case you may as well just use an ItemsControl rather than a Listbox as all you're essentially doing is replacing the Listbox's internal scrollviewer with one outside it.
    How is this "better than a normal Listbox"?
    If this is a large list of items (more than a 3 screens full) then this will be hurting your performance as all the items will have to be rendered and scrolled when you manipulate the list. The listbox adds virtualisation of items to avoid this.

    ReplyDelete
  13. if listbox in ScrollViewer (ScrollViewer.VerticalScrollBarVisibility="Disabled"), when user scrolls it very fast, it is very very smooth,no element of it can not appear, but it "drinks" memory like beer :D

    ReplyDelete

I get a lot of comment spam :( - moderation may take a while.