Here are the tests which I did:
Test #1: Generate 1000'000 point data. Plot it with widget based on old QwtPlotGLCanvas class, using current Qwt ver. 6.1.3
Result: Terribly slow. Unusable zooming at all. Takes few seconds for every several pixels of dragging the mouse tracker to settle, and same few seconds to perform the zoom. On top of that a lot of glitching/blinking of tracking borders and tracking font. Totally unusable.
Test #2: Use SVN version 6.2.0, same 1000'000 point generated plot. Use the new QwtPlotOpenGLCanvas class.
Result: Slow. Still takes 6-8 seconds to actually zoom after the tracking zooming border is un-clicked. No tracking border or font glitching though. Still close to unusable.
Test #3: Same as Test #2, but also add the FilterPointsAggressive property to the curve.
Result: I notice some speedup, but it still takes this time few seconds to perform zoom after setting the tracking border. Still hardly usable.
Test #4: Use SVN version 6.2.0, same 1000'000 point generated plot. But just use regular QwtPlotCanvas, no messing with OpenGL.
Result: Results are kinda close to results of Test #3, maybe a second faster. but still slow.
Test #5: Use SVN Version 6.2.0, same 1000'000 point generated plot. Use regular QwtPlotCanvas class for canvas, again no OpenGL. But, add the FilterPointsAggressive property to the curve.
Result: OK, Now I have "something usable", this time delay is like 1-1.5s between un-clicking the zoom tracking cursor and actually graph being replotted properly with new zoom.
Now I can see that it just does not even make sense to use OpenGL here for this specific application, i.e. generating some big data, and then working with it by looking/zooming at different parts of it here and there using the zoom functionality.
And even if you forget about OpenGL... The Qwt is itself *SLOW* for the typical applications described above, i.e. when you for example model something, and your algorithms generate some plot in memory and now you need to peek at it carefully and often at its different parts, etc.
P.S. just for laughs I asked someone to perform similar experiment, i.e. generating 1000'000 points in some program called NI LabView, and to my surprise it just smoke my results obtained from Test #5! It was super fast and immediate response there to zoom in at different parts of the generated plot....
I just do not feel that Qwt is much of a use for these specific type of applications, unless the data amount is not big, or 1-2 second delay is OK for someone. I think it is still OK as a small auxiliary tool for quick modeling/showing data in Qt GUI applications, but nothing bigger than that.
And regarding OpenGL...I just feel that the whole "support" of OpenGL is executed poorly. Although this specific application used during these tests was not intended specifically to test the OpenGL speed of Qwt. (Print/PDF functionality is a horrible reason to use those combination of underlying classes and degrading speed/performance)




Reply With Quote
Bookmarks