{"id":3634,"date":"2019-11-07T20:34:33","date_gmt":"2019-11-08T04:34:33","guid":{"rendered":"http:\/\/blog.light42.com\/wordpress\/?p=3634"},"modified":"2022-01-14T17:36:28","modified_gmt":"2022-01-15T01:36:28","slug":"geos-3-8-benchmarks","status":"publish","type":"post","link":"http:\/\/blog.light42.com\/wordpress\/?p=3634","title":{"rendered":"GEOS 3.8 Benchmarks"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.light42.com\/wordpress\/wp-content\/uploads\/2012\/06\/PostgreSQL_logo.3colors.120x120.png\" alt=\"\" width=\"120\" height=\"120\" class=\"alignright size-full wp-image-575\" \/><br \/>\nnewly minted <strong>PostGIS<\/strong> 3 \/ <strong>PostgreSQL<\/strong> 12 \/ <strong>GEOS<\/strong> 3.8  combo<\/p>\n<pre>\r\nPostgreSQL 12.0 (Ubuntu 12.0-2.pgdg18.04+1) on x86_64-pc-linux-gnu\r\n  Ubuntu linux 4.15 x86_64    i7-2600 CPU @ 3.40GHz\r\n  shared_buffers = 4096MB     work_mem=128MB\r\n  \r\nPostGIS 3.0.0 r17983;   Proj 4.9.3\r\ndatabase  geom  2D POLYGON  valid,simple,4326   3.1million rows\r\n * all times in milliseconds, lower is better\r\n\r\n--  GEOS 3.7.1  postgresql-12-postgis-3_3.0.0+dfsg-2~exp1.pgdg18.04+1_amd64.deb\r\nST_IsValid(geom)         22023   21968   21976   21952\r\nST_PointOnSurface(geom)        53880   53668   53918\r\nST_Centroid(geom)        4610    4383   4384\r\nST_Buffer( geom,0.001)      98284   98111\r\nST_Union( geom, ST_Buffer(geom,0.001))      151677   151452\r\n\r\n--  GEOS 3.8.1 r93be2e1d;  RelWithDebInfo\r\nST_IsValid(geom)         13761   13698   13734   13672\r\nST_PointOnSurface(geom)        4010   3929  3943\r\nST_Centroid(geom)        4106    4015   4018\r\nST_Buffer( geom,0.001)      68152   68387\r\nST_Union( geom, ST_Buffer(geom,0.001))      109546   109829\r\n<\/pre>\n<p><em>note: the graphic here shows only relative time between two runs <br \/>\nof the same operators, not absolute time between operators.. <\/em><br \/>\n<a href=\"http:\/\/blog.light42.com\/wordpress\/wp-content\/uploads\/2019\/11\/geos38_Bench.png\" target=\"_b\" rel=\"noopener noreferrer\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blog.light42.com\/wordpress\/wp-content\/uploads\/2019\/11\/geos38_Bench-150x150.png\" alt=\"\" width=\"150\" height=\"150\" class=\"aligncenter size-thumbnail wp-image-3636\" \/><\/a><\/p>\n<p>Compared to <strong>PostgreSQL<\/strong> 10 \/ <strong>PostGIS<\/strong> 2.4 \/ <strong>GEOS<\/strong> 3.6.2 only two years ago; <br \/>\nbig evolution forward on several fronts.<\/p>\n<h4>Benchmarks v2  &#8212; New Data Sets<\/h4>\n<p><strong>* sparcels<\/strong> &nbsp; 450,000 rows, including ~1000 invalids by PostGIS definitions, mostly single ring (190MB)<\/p>\n<p><strong>* cpad19a<\/strong> &nbsp; 72,000 rows with a diverse range of area, vertice count and interior ring count (100MB)<\/p>\n<p><strong>* post_osm_bldgs<\/strong> &nbsp; 25,800 rows of recent OpenStreetmap 2D polygons marked as &#8220;building&#8221; of some kind<\/p>\n<pre>\r\npostgresql 10+190ubuntu0.1; postgis 2.5.2+dfsg-1~bionic1\r\n pg_workers enabled;  4GB shared_mem\r\n\r\n        sparcels    cpad   osm  \r\nIsValid\t\r\n  3.7.1     5274    5518   311\r\n  3.8.0     2768    3669   210\r\n 3.9dev     2551    1200   172\r\n 3.10.1              800   \r\n\r\nPointOnSurface where IsValid\t\r\n  3.7.1    21627   11174  1189\r\n  3.8.0     4134    5526   271\r\n 3.9dev     3659    1476   269\r\n 3.10.1             1037   \r\n\r\nCentroid where IsValid\r\n  3.7.1     6352    6289   311\r\n  3.8.0     3978    5857   279\r\n 3.9dev     3383    1396   256\r\n 3.10.1             1055   \r\n\r\nBuffer where IsValid\r\n  3.7.1    21138   52019  1341\r\n  3.8.0    16711   30226  1097\r\n 3.9dev    15699   27468  1045\r\n 3.10.1            26226   \r\n\r\nUnion(Buffer) where IsValid\r\n  3.7.1    36636   57707  2155\r\n  3.8.0    27883   35749  1721\r\n 3.9dev    26818   29314  1653\r\n 3.10.1            26226   \r\n\r\n* all times in milliseconds; lower is better\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>newly minted PostGIS 3 \/ PostgreSQL 12 \/ GEOS 3.8 combo PostgreSQL 12.0 (Ubuntu 12.0-2.pgdg18.04+1) on x86_64-pc-linux-gnu Ubuntu linux 4.15 x86_64 i7-2600 CPU @ 3.40GHz shared_buffers = 4096MB work_mem=128MB PostGIS 3.0.0 r17983; Proj 4.9.3 database geom 2D POLYGON valid,simple,4326 3.1million rows * all times in milliseconds, lower is better &#8212; GEOS 3.7.1 postgresql-12-postgis-3_3.0.0+dfsg-2~exp1.pgdg18.04+1_amd64.deb ST_IsValid(geom) 22023 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3634"}],"collection":[{"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3634"}],"version-history":[{"count":20,"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3634\/revisions"}],"predecessor-version":[{"id":3717,"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/3634\/revisions\/3717"}],"wp:attachment":[{"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3634"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.light42.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}