Unanswered Design Suggestion

  • Saturday, February 18, 2012 9:34 PM
     
     

    I am looking for design sugestion.

    I have a Windows Form application, this application can create about 300 graphs with each graph containing over 60,000 points.

    The graphs a created on a panel and user is allowed to select anyone of the graphs and open this graphs in it's own window where user is allowed to configure this graph.

    My question is how can I design this app so the user does not have to wait untill all 300 graphs are created before he has a control of the app.

    It takes about 1 min to create all of the graphs on a 32bit system and a slightly more on 64bit - once in a while the 32bit app will get out of memory error, but not on 64 bit.  

    I have tried to use TaskEx.Run method and serialize each graph after it is created, but although I got the control of the program before all of the graphs were created it took the program over 45 minutes to create and serialize all of the 300 graphs.

    Thank You

    Peter


    Peter

All Replies

  • Sunday, February 19, 2012 7:40 AM
     
     

    Hi Peter,

    you have to use Multi Threading Arcitecture for your Application.

    and why are you loading 300 graphs at a time. divide them in some category wise there after ask user to first category to show graphs.

    Regards

    Olivia

  • Sunday, February 19, 2012 2:16 PM
     
     

    Hi Peter,

    you have to use Multi Threading Arcitecture for your Application.

    and why are you loading 300 graphs at a time. divide them in some category wise there after ask user to first category to show graphs.

    Regards

    Olivia

    I have to loadd all 300 graphs because they are selected visually.  Although they are not pictures think of them as 300 pictiures and a user has to select a picture with a defect or a picture with a dog in it or a picture that has a lot of green in it.  Yes I can load 20 at a time and page through them, but that would be a real pain for a user when scrolling through them is a lot easier and faster.  Specialy when you have to go back and forth until you find what you are looking for. If I would gave you 300 pictures that you have never seen and tell you to pick one and you can load 20 pictures at one time you would probly paged 5 times and picked a picture most likely from the 4th page, but if you could click and hold on the scroll bar and scroll through all 300 pictures you would probably visualy scan all 300 pictures and pick one that's interesting to you.  Same thing goes for the graphs - I am looking for something, but I don't know what it is until I see it.

    Peter

  • Monday, February 20, 2012 11:41 AM
    Moderator
     
     

    I'm guessing the charts are thumbnails of some sort? In any case smaller than the actual chart after selection? You could try narrowing down the amount of data you bind to the chart as there is no way every 60000 points will render even if you used the whole screen (unless you have some sort of scatter chart perhaps.)

    Anyway, this is what I mean.

    As you can see, the general look of the data is the same, but the amount of data rendered is not. I didn't bother to test how much faster the charts rendered, but I'm sure there'll be a difference when rendering 300 charts.

    (Also, change the chart type to FastLine or FastPoint if applicable)

  • Monday, February 20, 2012 6:49 PM
     
     

    I'm guessing the charts are thumbnails of some sort? In any case smaller than the actual chart after selection? You could try narrowing down the amount of data you bind to the chart as there is no way every 60000 points will render even if you used the whole screen (unless you have some sort of scatter chart perhaps.)

    Anyway, this is what I mean.

    As you can see, the general look of the data is the same, but the amount of data rendered is not. I didn't bother to test how much faster the charts rendered, but I'm sure there'll be a difference when rendering 300 charts.

    (Also, change the chart type to FastLine or FastPoint if applicable)

    Correct the graphs are thumbnails or smaller version of each graph.  The selecting of less data is good idea it’s faster and uses a lot less memory which makes it even faster, the hard part is coming up with algorithm to average the skipped data. I am not a mathematician so am not sure how to do that and still have similar representation of the data – I am not sure if plain averaging of the skipped data would show the correct representation.  The problem with skipping data is for example if point 19999 has -40 in your graph data; visually the user would see it and open the graph for further examination, but this point would not show up on the ‘Every 1000<sup>th</sup>’ point graph if I just skipp the data.  I will play around with the data and see if I can come up with proper representation. 


    Peter

  • Tuesday, February 21, 2012 10:57 AM
    Moderator
     
     
    The problem with skipping data is for example if point 19999 has -40 in your graph data; visually the user would see it and open the graph for further examination, but this point would not show up on the ‘Every 1000<sup>th</sup>’ point graph if I just skipp the data.

    Yes, I thought of this too. I guess if the user is looking for anomalies like that and not the general look of the data, skipping data like this would not be a sufficient solution.

    I'm no expert on these things either, I'm sure google might find something if you know the right keywords. :)

  • Tuesday, February 21, 2012 1:15 PM
     
     

    I found this article that maybe is most suitable for your situation.

    http://vault42.org/path-optimization-using-the-douglas-peucker-line-approximation-algorithm/

    Hopefully it helps.


    My blog: http://soho-hsh.blogspot.com

  • Tuesday, February 21, 2012 2:11 PM
     
     

    I found this article that maybe is most suitable for your situation.

    http://vault42.org/path-optimization-using-the-douglas-peucker-line-approximation-algorithm/

    Hopefully it helps.


    My blog: http://soho-hsh.blogspot.com

    Thank you very much

    I't sure looks like something I can use, I will see if I can implement it and let you know.  Thank You


    Peter