[Marble-devel] Review Request 123239: Optimize linestring rendering via automatically assigned detail level values.
Dennis Nienhüser
dennis at nienhueser.de
Sun Jul 19 06:01:21 UTC 2015
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/123239/#review82628
-----------------------------------------------------------
what's needed to fix the poles? special-case it and don't optimize around there as a dirty hack maybe?
src/lib/marble/ViewportParams.cpp (line 378)
<https://git.reviewboard.kde.org/r/123239/#comment56982>
did you catch all usage of this function? It's a public method, I wonder if that subtly introduces bugs in 3rd party stuff if we don't rename it at the same time.
src/lib/marble/geodata/data/GeoDataLineString.cpp (line 134)
<https://git.reviewboard.kde.org/r/123239/#comment56984>
curly brackets please
src/lib/marble/geodata/data/GeoDataLineString.cpp (line 136)
<https://git.reviewboard.kde.org/r/123239/#comment56987>
This is like a cache with 1 entry? Does using a QCache make sense?
src/lib/marble/geodata/data/GeoDataLineString.cpp (line 138)
<https://git.reviewboard.kde.org/r/123239/#comment56981>
What's the reason not to use a function here? Is it supposed to be faster, more readable, or to allow fine-tuning of values?
What about using a QMap<int,double> instead and calling lowerBound() to return the level? That is as readable and fine-tunable and faster wrt. computational complexity (for large input sizes at least which arguably is not the case here)
src/lib/marble/geodata/data/GeoDataLineString.cpp (line 161)
<https://git.reviewboard.kde.org/r/123239/#comment56983>
Let's have a QVector<double> m_resolution member and place the values there, then replace the implementation with sth like
return m_resolution.value(level, m_resolution[17]);
src/lib/marble/geodata/data/GeoDataLineString.cpp (line 225)
<https://git.reviewboard.kde.org/r/123239/#comment56985>
curly brackets please and move to the top of the method
src/lib/marble/geodata/data/GeoDataLineString.cpp (line 255)
<https://git.reviewboard.kde.org/r/123239/#comment56986>
curly brackets please
src/lib/marble/geodata/data/GeoDataLineString_p.h (line 104)
<https://git.reviewboard.kde.org/r/123239/#comment56979>
newline missing
src/lib/marble/projections/AbstractProjection.cpp (line 51)
<https://git.reviewboard.kde.org/r/123239/#comment56980>
why not share with geodatalinestringprivate somehow?
- Dennis Nienhüser
On April 3, 2015, 1:34 p.m., Torsten Rahn wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/123239/
> -----------------------------------------------------------
>
> (Updated April 3, 2015, 1:34 p.m.)
>
>
> Review request for Marble, Bernhard Beschow, Dennis Nienhüser, Marius Stanciu, and Thibaut Gridel.
>
>
> Repository: marble
>
>
> Description
> -------
>
> Allow for automatically assigning detail values to the nodes inside a linestring.
> This mechanism is used for PN2 parsing in this patch.
> Taking the detail level into account this approach improves geometry layer performance by 20% on my i7 based machine.
> This patch also fixes the "backwards" semantical meaning of ViewportParams::resolve()
> In the next step this optimization could also be applied during KML and OSM parsing.
>
>
> Diffs
> -----
>
> src/lib/marble/ViewportParams.cpp bca8ea9
> src/lib/marble/geodata/data/GeoDataCoordinates.h 610b423
> src/lib/marble/geodata/data/GeoDataLineString.h 4e4e3da
> src/lib/marble/geodata/data/GeoDataLineString.cpp 8864518
> src/lib/marble/geodata/data/GeoDataLineString_p.h 2c7b9ec
> src/lib/marble/projections/AbstractProjection.cpp 591adc0
> src/lib/marble/projections/AbstractProjection_p.h 7bbfcb5
> src/lib/marble/projections/AzimuthalProjection.cpp d6e7376
> src/lib/marble/projections/CylindricalProjection.cpp 42345ab
> src/plugins/runner/pn2/Pn2Runner.cpp fd363c8
>
> Diff: https://git.reviewboard.kde.org/r/123239/diff/
>
>
> Testing
> -------
>
> Tested manually using the Atlas map, Plain map and Political map without apparent regressions. "make test" runs fine.
> Checked the geometry layer values by starting Marble with --runtimeTrace. On average the msec values are about 20% lower on my machine (and I hope that improvement is even better on slower CPUs).
> Ideas for unit tests regarding this patch are welcome. ;-)
>
>
> Thanks,
>
> Torsten Rahn
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/marble-devel/attachments/20150719/664bfea6/attachment.html>
More information about the Marble-devel
mailing list