From dda8d2ac5754de5e967b58c0a70c35b7ff1a131c Mon Sep 17 00:00:00 2001 From: Adam Wulkiewicz Date: Thu, 18 Apr 2013 00:04:29 +0000 Subject: [PATCH] geometry.index: docs - updated rtree times and linear picture, test - cosmetic change in experimental query iterator test, example - added experimental query iterator to the benchmark [SVN r83944] --- doc/html/img/index/rtree/linear.png | Bin 2158 -> 2204 bytes doc/index/rtree/introduction.qbk | 6 +++--- example/index/benchmark.cpp | 28 ++++++++++++++++++++++++---- test/index/rtree/test_rtree.hpp | 10 +--------- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/doc/html/img/index/rtree/linear.png b/doc/html/img/index/rtree/linear.png index a8cc786a0b99928136ed81c8bf9b987113f97dc2..15cbd4c3e68dd7dd9762d4acb5761e4b81fa1563 100644 GIT binary patch delta 2107 zcmZvcdpy&N8^^aUa%q}UB1IHhNX)Uh#c< zL}Enh9|nd$2(;?~Y#)ojWFNZc>nm7+I?_7go${6p_;?SWfbXBA<@=|lEJIGo%*;t% zD~Y}x4ReV9LD&`vY9cISPyT(0aUGDcSJ3^9C_+NoP@Sb($yrrr#bKB6-*QD!p!%T< z(gQF10z?Oz6=#f{i|#)<^LxCP#@N$=ZD?2{DW3lWg2Eg)TJ^KX!8TWoBR3jM>$a_y z*PI_rL)buGvvk;P2b(u=oPsw;K{?RG77|^VJd%I4&^GW%K)a_l$JV5Ih+ezr!Mxrw*YHr5ry!U@yPXRyoMr+5Yo} zGmi6Xo=z9J@tLjR%&8)8&U0<9mB>XzX$d??P6BhioKF~1$cLZI7FH zbb%U6y%~;Pw#9CY8$kvU5*Lv;vwqh!!y z!w@ow#;*aev{mV6GgCbE$SB;0X0mcD<>m0ixzlEmVQJv`{iz#X?d-sqr46#*fp$02 zKUQjSMuJ+4`AhDH=0PbXdz5C^MO^ATE$UIuUJ$503CF#JyYiv_^7|fW0qnOc2x;R* zYW>+iRRDIqw}F4v$})L27lpax=cy>_ucOuGyjnxwqfVzZm6F#w>xF4;B>8*zLc^rL zq|GZXh28<&y0d5u4|=g8@cW#!-&yk9t@iA)r$f!*H1L;k>)LI65-xxrDGqs&_tCk^ zZ~+VU6b%N1JtZ?`T0i16DhXWtMG`lDGZu^tP8N{to|r9)L#cfgJQD36#S=kI>p9~S zETv}xRAw=c%Q1nXFy&FPZ$E0AKca+cOMhRq;Ecyq^{&p|V$d3L#;X|vH%<-xFFOU< zuo%jF6ill(`~eIF6VX8kAZ}b7aM_AY$$+0qwnZj|9E*m&hme^OO-MTUO19mSNdH@6sd$(f-!SIv6QTGZBlNDzM z58S+CHi;CePfJTzmWFBN*556=o!J-glI-jRbk)5k zQ3ic+lUWS-ZTaBnm4Po|mH2l=NbM%}g%4H_Zx`8}kU=n~8 zA)ixBf;2v50pc<1HKBf@an@9%KpBlO<;&e5#NZb4MhV@t;TGLV^-^ulIMU&W2l?ks z*5wNv+X#NIg>rvw7mu`lfG55@&~M7T&s(jxHXeg$fhMVR41Bn=I_55Lsq<3QY$OBIb6B7^_qS{}40uMQyi zuyVg5(REgT+-Q@gjw{G2X$5!HTVGUoRyDg2+PL3B0O#^Rm43_FMsL%gTtozoF z#DYE5)ulFdm@WFV*Q^1tJ+FCf>x6F0w9jbvDzNUj2u0#1I3XxoC5;TtNKSjOh!^9O#zalwT~XsOMv1Y87O518j2G=3 zM&%ren$?QW1<5x1~sbWp9t!*Mo(wIwOikYwHWw^Ou*Si};}AU!H^huLaN6 zkb|d|9RS_ul|$2l$e>({rT+EEQQVIC^`XVvtW5uWc07zA2B7g@32$%^tQyNa-|K;C zVT|KV^61)QH(`WE512Ii`BD2epZDN}opwA;0$=(BW)B@50e@A>*#=>c^IRoOiUEZy zBfXi4-$$_0PG9gk)FLx2I%ju*32qpV=p-ON(5low@7uTb#-+ybaAhJo&re-Y!ouEx zQ7zq&Ij)#B{~<}}2*9c%{m7W`1ErIU@b$FNLs!4XcJ{Otmr+t-M5qCu{4j5Up~R*A z?ANrO_&oI$%dLoO=D9QM&ZsS6Vjr7@0g z@;Kv@_b<}Ij^281p8<)0G{LhF9SD*r3fYcomp_6v`S*7l8cAIIk=xyRp*Lpa$@0owslI$HH^CLJx= z?A1e-EK1hp>;`s+ij}&|Mnl*XdQ1IqOB0BAvMokj6&>NTaWP@xw;I@Gsz+^w!}VtL zC##Jett&l@%LY-l855E@rOVD;*Ex+o=D3ZQY&m)W`tc=hU2zp9V`n95LL(c38o@ce z)2E3SK3S=hNsT8d2nfhv`PRZ-C^p~nUEpT9gI*+r)z?nbyu=w0F<1c zz&}`xpfr^8RKoD4sG*Q}u2Ao{gziPf^Z?EU6->0~J9kHiEFG@qC9e>kJXyx;%k}HC z=pb~eSSxL^BNpM?ik7mlrr>E+xI!mAZG+XY4h2Pav5!y(Ty8U1PeNUOZ? zRoqy4G%j+!B`k?@MsZ%T?qw3qFBtvy8Y{UQTD-eo_Q8@3yr#&c5|NKlh%ISi#5H8! zcq0>@bGod56XAj}?rGaA00$wSaF-rXdSrrNo&s-;4naibL{UP1#AY8BqobXUK02i3 zIfg$of)%U(Kdo)-PhGyB38*(0hstwJUE;o4><7;B2U#ViJGdAqEZ1jV4G>jla;j(F zv#afE0#wt=lUn>rUcOw-yvWte%O9oG1yKjI6OUqR&ZNM*bkDB2gk5mO0?fZ|I6WkX zd9c9_5aAoh>FW^401772<3S=9C*1r-O*9zw7dj&+b)rR7UVI;scnwrEyguf4^&7g=T6{bP{8x~ zhlsRCXB@uyZNN&8>uDS6@3on?5y+kA9K02 z*WSnv?H07)Yd|)%xc`av-#(Xf=Ul#dD}g6w%^6SW6T|%{F(9|3YkQ`La!u3BdUYi{ zi1Vr2b~uDpm&Yr#djJzKGNJJX%+}o)9@rlBlWalyA!*`R&;Uk=Zdx^>Dz6o^?mKpE z+Iv-aa?Kfy92tv89_m~SD_5AbPLW%A>Ws6*ok+$pgKc!3oC=B60Amu;lmvi5pU2Pl+PKYZwhj_Iv>NN5n( zc8bMrGooFwIIw}WkB~UwBzyz!Eg{1-Ww5U;qPe%4{E|YxNj?6uymKWfgHOl zX1Ezi?jxh`MW((oZxc3SlHfW?AwVScHEFfE|Cafb~IM4mqS9`t(v2m=-0aAgPC;M-qyWM>N diff --git a/doc/index/rtree/introduction.qbk b/doc/index/rtree/introduction.qbk index 8bbd39323..fa3910f96 100644 --- a/doc/index/rtree/introduction.qbk +++ b/doc/index/rtree/introduction.qbk @@ -39,9 +39,9 @@ non-overlapping boxes. [table [[] [linear algorithm] [quadratic algorithm] [R*-tree]] [[*Example structure*] [[$img/index/rtree/linear.png]] [[$img/index/rtree/quadratic.png]] [[$img/index/rtree/rstar.png]]] -[[*1M Values inserts*] [2.11s] [2.98s] [5.49s]] -[[*100k spatial queries*] [1.52s] [0.45s] [0.17s]] -[[*100k knn queries*] [4.51s] [2.22s] [0.6s]] +[[*1M Values inserts*] [1.65s] [2.51s] [4.96s]] +[[*100k spatial queries*] [0.87s] [0.25s] [0.09s]] +[[*100k knn queries*] [3.25s] [1.41s] [0.51s]] ] [heading Implementation details] diff --git a/example/index/benchmark.cpp b/example/index/benchmark.cpp index 988dd5004..dd058de2a 100644 --- a/example/index/benchmark.cpp +++ b/example/index/benchmark.cpp @@ -9,6 +9,7 @@ #include +#define BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL #include #include @@ -47,9 +48,9 @@ int main() typedef bg::model::point P; typedef bg::model::box

B; - typedef bgi::rtree > RT; - //typedef bgi::rtree > RT; - //typedef bgi::rtree > RT; + typedef bgi::rtree > RT; + //typedef bgi::rtree > RT; + //typedef bgi::rtree > RT; std::cout << "sizeof rtree: " << sizeof(RT) << std::endl; @@ -91,6 +92,25 @@ int main() std::cout << time << " - query(B) " << queries_count << " found " << temp << '\n'; } +#ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL + { + clock_t::time_point start = clock_t::now(); + size_t temp = 0; + for (size_t i = 0 ; i < queries_count ; ++i ) + { + float x = coords[i].first; + float y = coords[i].second; + result.clear(); + std::copy(t.qbegin(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))), + t.qend(bgi::intersects(B(P(x - 10, y - 10), P(x + 10, y + 10)))), + std::back_inserter(result)); + temp += result.size(); + } + dur_t time = clock_t::now() - start; + std::cout << time << " - query iterator(B) " << queries_count << " found " << temp << '\n'; + } +#endif + { clock_t::time_point start = clock_t::now(); size_t temp = 0; @@ -123,7 +143,7 @@ int main() { clock_t::time_point start = clock_t::now(); size_t temp = 0; - for (size_t i = 0 ; i < queries_count / 10 ; ++i ) + for (size_t i = 0 ; i < queries_count / 1 ; ++i ) { float x = coords[i].first + 100; float y = coords[i].second + 100; diff --git a/test/index/rtree/test_rtree.hpp b/test/index/rtree/test_rtree.hpp index 4e73cc846..1c6ca587a 100644 --- a/test/index/rtree/test_rtree.hpp +++ b/test/index/rtree/test_rtree.hpp @@ -642,13 +642,6 @@ void exactly_the_same_outputs(Rtree const& rtree, Range1 const& output, Range2 c // spatial query -template -void spatial_query_iterator(Iterator first, Iterator last, Container & container) -{ - for ( ; first != last ; ++first ) - container.push_back(*first); -} - template void spatial_query(Rtree & rtree, Predicates const& pred, std::vector const& expected_output) { @@ -672,8 +665,7 @@ void spatial_query(Rtree & rtree, Predicates const& pred, std::vector con #ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL std::vector output3; - //std::copy(rtree.qbegin(pred), rtree.qend(pred), std::back_inserter(output3)); - spatial_query_iterator(rtree.qbegin(pred), rtree.qend(pred), output3); + std::copy(rtree.qbegin(pred), rtree.qend(pred), std::back_inserter(output3)); compare_outputs(rtree, output3, expected_output); #endif