voronoi_benchmark.htm 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html><head>
  3. <meta http-equiv="Content-Language" content="en-us">
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"><title>Voronoi Benchmark</title></head><body>
  5. <table style="margin: 0pt; padding: 0pt; width: 100%;" border="0" cellpadding="0" cellspacing="0">
  6. <tbody>
  7. <tr>
  8. <td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">
  9. <div style="padding: 5px;" align="center"> <img src="images/boost.png" border="0" height="86" width="277"><a title="www.boost.org home page" tabindex="2" style="border: medium none ;" href="http://www.boost.org/"> </a></div>
  10. <div style="margin: 5px;">
  11. <h3 class="navbar">Contents</h3>
  12. <ul>
  13. <li><a href="index.htm">Boost.Polygon Main Page</a></li>
  14. <li><a href="gtl_design_overview.htm">Design Overview</a></li>
  15. <li><a href="gtl_isotropy.htm">Isotropy</a></li>
  16. <li><a href="gtl_coordinate_concept.htm">Coordinate Concept</a></li>
  17. <li><a href="gtl_interval_concept.htm">Interval Concept</a></li>
  18. <li><a href="gtl_point_concept.htm">Point Concept</a></li>
  19. <li><a href="gtl_segment_concept.htm">Segment Concept</a></li>
  20. <li><a href="gtl_rectangle_concept.htm">Rectangle Concept</a></li>
  21. <li><a href="gtl_polygon_90_concept.htm">Polygon 90 Concept</a></li>
  22. <li><a href="gtl_polygon_90_with_holes_concept.htm">Polygon 90
  23. With Holes Concept</a></li>
  24. <li><a href="gtl_polygon_45_concept.htm">Polygon 45 Concept</a></li>
  25. <li><a href="gtl_polygon_45_with_holes_concept.htm">Polygon 45
  26. With Holes Concept</a></li>
  27. <li><a href="gtl_polygon_concept.htm">Polygon Concept</a></li>
  28. <li><a href="gtl_polygon_with_holes_concept.htm">Polygon With
  29. Holes Concept</a></li>
  30. <li><a href="gtl_polygon_90_set_concept.htm">Polygon 90 Set
  31. Concept</a></li>
  32. <li><a href="gtl_polygon_45_set_concept.htm">Polygon 45 Set
  33. Concept</a></li>
  34. <li><a href="gtl_polygon_set_concept.htm">Polygon Set Concept</a></li>
  35. <li><a href="gtl_connectivity_extraction_90.htm">Connectivity
  36. Extraction 90</a></li>
  37. <li><a href="gtl_connectivity_extraction_45.htm">Connectivity
  38. Extraction 45</a></li>
  39. <li><a href="gtl_connectivity_extraction.htm">Connectivity
  40. Extraction</a></li>
  41. <li><a href="gtl_property_merge_90.htm">Property Merge 90</a></li>
  42. <li><a href="gtl_property_merge_45.htm">Property Merge 45</a></li>
  43. <li><a href="gtl_property_merge.htm">Property Merge</a></li>
  44. <li><a href="voronoi_main.htm">Voronoi Main Page<br>
  45. </a></li>
  46. <li>Voronoi Benchmark<br>
  47. </li>
  48. <li><a href="voronoi_builder.htm">Voronoi Builder</a></li>
  49. <li><a href="voronoi_diagram.htm">Voronoi Diagram</a></li>
  50. </ul>
  51. <h3 class="navbar">Other Resources</h3>
  52. <ul>
  53. <li><a href="GTL_boostcon2009.pdf">GTL Boostcon 2009 Paper</a></li>
  54. <li><a href="GTL_boostcon_draft03.pdf">GTL Boostcon 2009
  55. Presentation</a></li>
  56. <li><a href="analysis.htm">Performance Analysis</a></li>
  57. <li><a href="gtl_tutorial.htm">Layout Versus Schematic Tutorial</a></li>
  58. <li><a href="gtl_minkowski_tutorial.htm">Minkowski Sum Tutorial</a></li>
  59. <li><a href="voronoi_basic_tutorial.htm">Voronoi Basic Tutorial</a></li>
  60. <li><a href="voronoi_advanced_tutorial.htm">Voronoi Advanced
  61. Tutorial</a></li>
  62. </ul>
  63. </div>
  64. <h3 class="navbar">Polygon Sponsor</h3>
  65. <div style="padding: 5px;" align="center"> <img src="images/intlogo.gif" border="0" height="51" width="127"><a title="www.adobe.com home page" tabindex="2" style="border: medium none ;" href="http://www.adobe.com/"> </a></div>
  66. </td>
  67. <td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%"><!-- End Header --> <br>
  68. <h1>Voronoi Benchmark</h1>
  69. <h2>Benchmark Details</h2>
  70. From the topological perspective Delaunay triangulation is a dual
  71. data structure to the Voronoi diagram, thus libraries that provide
  72. Delaunay triangulation construction routines were also included into
  73. the benchmark. However, from the computation perspective Voronoi
  74. diagram contains more information as it embeds information regarding
  75. the coordinates of the centers of the inscribed circles tangent to the
  76. three or more input geometries.<br>
  77. The benchmark consists of the two parts:<br>
  78. <ol>
  79. <li>construction of the Voronoi diagram / Delaunay triangulation of a set of
  80. random points uniformly distributed over 32-bit integer grid (<a href="../benchmark/voronoi_benchmark_points.cpp"><span style="text-decoration: underline;">voronoi_benchmark_points.cpp</span></a>)</li><li>construction of the Voronoi diagram / Delaunay triangulation of a set of
  81. random non-intersecting
  82. segments uniformly distributed over 32-bit integer grid (<a href="../benchmark/voronoi_benchmark_segments.cpp">voronoi_benchmark_segments.cpp</a>).</li>
  83. </ol>
  84. <h2>Libraries</h2>
  85. <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
  86. <tbody>
  87. <tr>
  88. <td style="vertical-align: top;"><span style="font-weight: bold;">Library</span><br>
  89. </td>
  90. <td style="vertical-align: top; font-weight: bold;">Boost.Polygon<br>
  91. </td>
  92. <td style="vertical-align: top; font-weight: bold;">CGAL<br>
  93. </td>
  94. <td style="vertical-align: top; font-weight: bold;">SHull<br>
  95. </td>
  96. </tr>
  97. <tr>
  98. <td style="vertical-align: top;">Official page<br>
  99. </td>
  100. <td style="vertical-align: top;">www.boost.org/libs/polygon&#8206;<br>
  101. </td>
  102. <td style="vertical-align: top;">http://www.cgal.org<br>
  103. </td>
  104. <td style="vertical-align: top;">http://www.s-hull.org<br>
  105. </td>
  106. </tr>
  107. <tr>
  108. <td style="vertical-align: top;">Algorithm<br>
  109. </td>
  110. <td style="vertical-align: top;">sweep-line<br>
  111. </td>
  112. <td style="vertical-align: top;">incremental<br>
  113. </td>
  114. <td style="vertical-align: top;">sweep-hull<br>
  115. </td>
  116. </tr>
  117. <tr>
  118. <td style="vertical-align: top;">Supported input geometries<br>
  119. </td>
  120. <td style="vertical-align: top;">points and segments<br>
  121. </td>
  122. <td style="vertical-align: top;">points and segments<br>
  123. </td>
  124. <td style="vertical-align: top;">points<br>
  125. </td>
  126. </tr>
  127. <tr>
  128. <td style="vertical-align: top;">Output data structure<br>
  129. </td>
  130. <td style="vertical-align: top;">Voronoi diagram<br>
  131. </td>
  132. <td style="vertical-align: top;">Delaunay triangulation<br>
  133. </td>
  134. <td style="vertical-align: top;">Delaunay triangulation<br>
  135. </td>
  136. </tr>
  137. <tr>
  138. <td style="vertical-align: top;">Complexity<br>
  139. </td>
  140. <td style="vertical-align: top;">O(N log N)<br>
  141. </td>
  142. <td style="vertical-align: top;">O(N log N)</td>
  143. <td style="vertical-align: top;">O(N log N)</td>
  144. </tr>
  145. <tr>
  146. <td style="vertical-align: top;">Memory usage<br>
  147. </td>
  148. <td style="vertical-align: top;">O(N)<br>
  149. </td>
  150. <td style="vertical-align: top;">O(N)<br>
  151. </td>
  152. <td style="vertical-align: top;">O(N)<br>
  153. </td>
  154. </tr>
  155. <tr>
  156. <td style="vertical-align: top;">Robustness policies<br>
  157. </td>
  158. <td style="vertical-align: top;">lazy arithmetic, exact predicates, topology analysis<br>
  159. </td>
  160. <td style="vertical-align: top;">lazy arithmetic, exact predicates, topology analysis<br>
  161. </td>
  162. <td style="vertical-align: top;">non-robust<br>
  163. </td>
  164. </tr>
  165. <tr>
  166. <td style="vertical-align: top;">Output coordinates precision<br>
  167. </td>
  168. <td style="vertical-align: top;">128 machine epsilon<br>
  169. </td>
  170. <td style="vertical-align: top;">no output coordinates<br>
  171. </td>
  172. <td style="vertical-align: top;">no output coordinates<br>
  173. </td>
  174. </tr>
  175. <tr>
  176. <td style="vertical-align: top;">External dependencies<br>
  177. </td>
  178. <td style="vertical-align: top;">No<br>
  179. </td>
  180. <td style="vertical-align: top;">Boost, GMP, MPFR<br>
  181. </td>
  182. <td style="vertical-align: top;">No<br>
  183. </td>
  184. </tr>
  185. </tbody>
  186. </table>
  187. <br>
  188. The other known libraries (<a href="https://github.com/aewallin/openvoronoi">OpenVoronoi</a>,
  189. <a href="http://www.cs.cmu.edu/%7Equake/triangle.html">Triangle</a>, <a href="http://www.cosy.sbg.ac.at/%7Eheld/projects/vroni/vroni.html">Vroni</a>) will be considered for the inclusion into the benchmark in the future.<br>
  190. <ul>
  191. <ul>
  192. </ul>
  193. <ul>
  194. </ul>
  195. </ul>
  196. <h2>System Configuration<br>
  197. </h2>
  198. Hardware: Intel i5-7600 2.8 GHz, 16GiB RAM.<br>
  199. OS: Ubuntu 13.04 64-bit.<br>
  200. Compiler: GCC 4.7.3.<br>
  201. Libraries and dependencies: Boost 1.54.0, CGAL-4.3-beta1, GMP 5.1.4, MPFR 3.1.2, S-Hull.<br>
  202. <h2>Benchmark Results</h2>
  203. <h3>Random Points Benchmark</h3><img style="border: 1px solid ; width: 500px; height: 350px;" alt="Benchmark Points Chart" src="../benchmark/benchmark_results/plots/benchmark_points.png"><br>
  204. <table style="text-align: left; width: 100%; margin-left: auto; margin-right: auto;" border="1" cellpadding="2" cellspacing="2">
  205. <tbody>
  206. <tr>
  207. <td colspan="2" rowspan="1" style="vertical-align: top; text-align: center;">Test specification<br>
  208. </td>
  209. <td colspan="6" rowspan="1" style="vertical-align: top; text-align: center;">Average construction
  210. time (in secs)<br>
  211. </td>
  212. </tr>
  213. <tr>
  214. <td style="vertical-align: top; text-align: center;">Number
  215. of Points<br>
  216. </td>
  217. <td style="vertical-align: top; text-align: center;">Number
  218. of Runs<br>
  219. </td>
  220. <td style="vertical-align: top; text-align: center;">Boost
  221. Linux-64<br>
  222. </td>
  223. <td style="vertical-align: top; text-align: center;">CGAL
  224. Linux-64<br>
  225. </td>
  226. <td style="vertical-align: top; text-align: center;">S-Hull
  227. Linux-64<br>
  228. </td>
  229. </tr>
  230. <tr>
  231. <td style="vertical-align: top; text-align: right;">100<br>
  232. </td>
  233. <td style="vertical-align: top; text-align: right;">10000<br>
  234. </td>
  235. <td style="vertical-align: top; text-align: right;">0.000206<br>
  236. </td>
  237. <td style="vertical-align: top; text-align: right;">&nbsp;0.000073<br>
  238. </td>
  239. <td style="vertical-align: top; text-align: right;">0.000243<br>
  240. </td>
  241. </tr>
  242. <tr>
  243. <td style="vertical-align: top; text-align: right;">1000<br>
  244. </td>
  245. <td style="vertical-align: top; text-align: right;">1000<br>
  246. </td>
  247. <td style="vertical-align: top; text-align: right;">0.002250<br>
  248. </td>
  249. <td style="vertical-align: top; text-align: right;">0.000753<br>
  250. </td>
  251. <td style="vertical-align: top; text-align: right;">0.002184<br>
  252. </td>
  253. </tr>
  254. <tr>
  255. <td style="vertical-align: top; text-align: right;">10000<br>
  256. </td>
  257. <td style="vertical-align: top; text-align: right;">100<br>
  258. </td>
  259. <td style="vertical-align: top; text-align: right;">0.024100<br>
  260. </td>
  261. <td style="vertical-align: top; text-align: right;">0.007917<br>
  262. </td>
  263. <td style="vertical-align: top; text-align: right;">0.030552<br>
  264. </td>
  265. </tr>
  266. <tr>
  267. <td style="vertical-align: top; text-align: right;">100000<br>
  268. </td>
  269. <td style="vertical-align: top; text-align: right;">10<br>
  270. </td>
  271. <td style="vertical-align: top; text-align: right;">0.292000<br>
  272. </td>
  273. <td style="vertical-align: top; text-align: right;">0.084336<br>
  274. </td>
  275. <td style="vertical-align: top; text-align: right;">0.451913<br>
  276. </td>
  277. </tr>
  278. <tr>
  279. <td style="vertical-align: top; text-align: right;">1000000<br>
  280. </td>
  281. <td style="vertical-align: top; text-align: right;">1<br>
  282. </td>
  283. <td style="vertical-align: top; text-align: right;">3.470000<br>
  284. </td>
  285. <td style="vertical-align: top; text-align: right;">0.902300<br>
  286. </td>
  287. <td style="vertical-align: top; text-align: right;">6.603814<br>
  288. </td>
  289. </tr>
  290. </tbody>
  291. </table>
  292. <br>
  293. <h3>Random Segments Benchmark</h3><img style="border: 1px solid ; width: 500px; height: 350px;" alt="Benchmark Segment Chart" src="../benchmark/benchmark_results/plots/benchmark_segments.png"><br>
  294. <table style="text-align: left; width: 100%;" border="1" cellpadding="2" cellspacing="2">
  295. <tbody>
  296. <tr>
  297. <td colspan="2" rowspan="1" style="vertical-align: top; text-align: center;">Test specification<br>
  298. </td>
  299. <td colspan="4" rowspan="1" style="vertical-align: top; text-align: center;">Average construction
  300. time (in secs)</td>
  301. </tr>
  302. <tr>
  303. <td style="vertical-align: top; text-align: center;">Number
  304. of Segments<br>
  305. </td>
  306. <td style="vertical-align: top; text-align: center;">Number
  307. of Runs<br>
  308. </td>
  309. <td style="vertical-align: top; text-align: center;">Boost
  310. Linux-64<br>
  311. </td>
  312. <td style="vertical-align: top; text-align: center;">CGAL
  313. Linux-64<br>
  314. </td>
  315. </tr>
  316. <tr>
  317. <td style="vertical-align: top; text-align: right;">100<br>
  318. </td>
  319. <td style="vertical-align: top; text-align: right;">10000<br>
  320. </td>
  321. <td style="vertical-align: top; text-align: right;">0.002284<br>
  322. </td>
  323. <td style="vertical-align: top; text-align: right;">0.002985<br>
  324. </td>
  325. </tr>
  326. <tr>
  327. <td style="vertical-align: top; text-align: right;">1000<br>
  328. </td>
  329. <td style="vertical-align: top; text-align: right;">1000<br>
  330. </td>
  331. <td style="vertical-align: top; text-align: right;">0.023240<br>
  332. </td>
  333. <td style="vertical-align: top; text-align: right;">0.032180<br>
  334. </td>
  335. </tr>
  336. <tr>
  337. <td style="vertical-align: top; text-align: right;">10000<br>
  338. </td>
  339. <td style="vertical-align: top; text-align: right;">100<br>
  340. </td>
  341. <td style="vertical-align: top; text-align: right;">&nbsp;0.237700<br>
  342. </td>
  343. <td style="vertical-align: top; text-align: right;">0.337400<br>
  344. </td>
  345. </tr>
  346. <tr>
  347. <td style="vertical-align: top; text-align: right;">100000<br>
  348. </td>
  349. <td style="vertical-align: top; text-align: right;">10<br>
  350. </td>
  351. <td style="vertical-align: top; text-align: right;">2.488000<br>
  352. </td>
  353. <td style="vertical-align: top; text-align: right;">3.633000<br>
  354. </td>
  355. </tr>
  356. <tr>
  357. <td style="vertical-align: top; text-align: right;">1000000<br>
  358. </td>
  359. <td style="vertical-align: top; text-align: right;">1<br>
  360. </td>
  361. <td style="vertical-align: top; text-align: right;">25.00000<br>
  362. </td>
  363. <td style="vertical-align: top; text-align: right;">39.090000<br>
  364. </td>
  365. </tr>
  366. </tbody>
  367. </table>
  368. <br><span style="font-weight: bold;"></span></td>
  369. </tr>
  370. <tr>
  371. <td style="background-color: rgb(238, 238, 238);" nowrap="1" valign="top">&nbsp;</td>
  372. <td style="padding-left: 10px; padding-right: 10px; padding-bottom: 10px;" valign="top" width="100%">
  373. <table class="docinfo" id="table2" frame="void" rules="none">
  374. <colgroup> <col class="docinfo-name"><col class="docinfo-content"> </colgroup> <tbody valign="top">
  375. <tr>
  376. <th class="docinfo-name">Copyright:</th>
  377. <td>Copyright © Andrii Sydorchuk 2010-2012.</td>
  378. </tr>
  379. <tr class="field">
  380. <th class="docinfo-name">License:</th>
  381. <td class="field-body">Distributed under the Boost Software
  382. License, Version 1.0. (See accompanying file <tt class="literal"><span class="pre">LICENSE_1_0.txt</span></tt> or copy at <a class="reference" target="_top" href="http://www.boost.org/LICENSE_1_0.txt">
  383. http://www.boost.org/LICENSE_1_0.txt</a>)</td>
  384. </tr>
  385. </tbody>
  386. </table>
  387. </td>
  388. </tr>
  389. </tbody>
  390. </table>
  391. </body></html>