UNPKG

skimr

Version:

CLI EDA for CSVs

334 lines (305 loc) 538 kB
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="generator" content="pandoc" /> <meta http-equiv="X-UA-Compatible" content="IE=EDGE" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Vroom Benchmarks</title> <script>// Pandoc 2.9 adds attributes on both header and div. We remove the former (to // be compatible with the behavior of Pandoc < 2.8). document.addEventListener('DOMContentLoaded', function(e) { var hs = document.querySelectorAll("div.section[class*='level'] > :first-child"); var i, h, a; for (i = 0; i < hs.length; i++) { h = hs[i]; if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6 a = h.attributes; while (a.length > 0) h.removeAttribute(a[0].name); } }); </script> <style type="text/css"> code{white-space: pre-wrap;} span.smallcaps{font-variant: small-caps;} span.underline{text-decoration: underline;} div.column{display: inline-block; vertical-align: top; width: 50%;} div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;} ul.task-list{list-style: none;} </style> <style type="text/css">body { background-color: #fff; margin: 1em auto; max-width: 700px; overflow: visible; padding-left: 2em; padding-right: 2em; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.35; } #TOC { clear: both; margin: 0 0 10px 10px; padding: 4px; width: 400px; border: 1px solid #CCCCCC; border-radius: 5px; background-color: #f6f6f6; font-size: 13px; line-height: 1.3; } #TOC .toctitle { font-weight: bold; font-size: 15px; margin-left: 5px; } #TOC ul { padding-left: 40px; margin-left: -1.5em; margin-top: 5px; margin-bottom: 5px; } #TOC ul ul { margin-left: -2em; } #TOC li { line-height: 16px; } table { margin: 1em auto; border-width: 1px; border-color: #DDDDDD; border-style: outset; border-collapse: collapse; } table th { border-width: 2px; padding: 5px; border-style: inset; } table td { border-width: 1px; border-style: inset; line-height: 18px; padding: 5px 5px; } table, table th, table td { border-left-style: none; border-right-style: none; } table thead, table tr.even { background-color: #f7f7f7; } p { margin: 0.5em 0; } blockquote { background-color: #f6f6f6; padding: 0.25em 0.75em; } hr { border-style: solid; border: none; border-top: 1px solid #777; margin: 28px 0; } dl { margin-left: 0; } dl dd { margin-bottom: 13px; margin-left: 13px; } dl dt { font-weight: bold; } ul { margin-top: 0; } ul li { list-style: circle outside; } ul ul { margin-bottom: 0; } pre, code { background-color: #f7f7f7; border-radius: 3px; color: #333; white-space: pre-wrap; } pre { border-radius: 3px; margin: 5px 0px 10px 0px; padding: 10px; } pre:not([class]) { background-color: #f7f7f7; } code { font-family: Consolas, Monaco, 'Courier New', monospace; font-size: 85%; } p > code, li > code { padding: 2px 0px; } div.figure { text-align: center; } img { background-color: #FFFFFF; padding: 2px; border: 1px solid #DDDDDD; border-radius: 3px; border: 1px solid #CCCCCC; margin: 0 5px; } h1 { margin-top: 0; font-size: 35px; line-height: 40px; } h2 { border-bottom: 4px solid #f7f7f7; padding-top: 10px; padding-bottom: 2px; font-size: 145%; } h3 { border-bottom: 2px solid #f7f7f7; padding-top: 10px; font-size: 120%; } h4 { border-bottom: 1px solid #f7f7f7; margin-left: 8px; font-size: 105%; } h5, h6 { border-bottom: 1px solid #ccc; font-size: 105%; } a { color: #0033dd; text-decoration: none; } a:hover { color: #6666ff; } a:visited { color: #800080; } a:visited:hover { color: #BB00BB; } a[href^="http:"] { text-decoration: underline; } a[href^="https:"] { text-decoration: underline; } code > span.kw { color: #555; font-weight: bold; } code > span.dt { color: #902000; } code > span.dv { color: #40a070; } code > span.bn { color: #d14; } code > span.fl { color: #d14; } code > span.ch { color: #d14; } code > span.st { color: #d14; } code > span.co { color: #888888; font-style: italic; } code > span.ot { color: #007020; } code > span.al { color: #ff0000; font-weight: bold; } code > span.fu { color: #900; font-weight: bold; } code > span.er { color: #a61717; background-color: #e3d2d2; } </style> </head> <body> <h1 class="title toc-ignore">Vroom Benchmarks</h1> <p>vroom is a new approach to reading delimited and fixed width data into R.</p> <p>It stems from the observation that when parsing files reading data from disk and finding the delimiters is generally not the main bottle neck. Instead (re)-allocating memory and parsing the values into R data types (particularly for characters) takes the bulk of the time.</p> <p>Therefore you can obtain very rapid input by first performing a fast indexing step and then using the Altrep framework available in R versions 3.5+ to access the values in a lazy / delayed fashion.</p> <div id="how-it-works" class="section level2"> <h2>How it works</h2> <p>The initial reading of the file simply records the locations of each individual record, the actual values are not read into R. Altrep vectors are created for each column in the data which hold a pointer to the index and the memory mapped file. When these vectors are indexed the value is read from the memory mapping.</p> <p>This means initial reading is extremely fast, in the real world dataset below it is ~ 1/4 the time of the multi-threaded <code>data.table::fread()</code>. Sampling operations are likewise extremely fast, as only the data actually included in the sample is read. This means things like the tibble print method, calling <code>head()</code>, <code>tail()</code> <code>x[sample(), ]</code> etc. have very low overhead. Filtering also can be fast, only the columns included in the filter selection have to be fully read and only the data in the filtered rows needs to be read from the remaining columns. Grouped aggregations likewise only need to read the grouping variables and the variables aggregated.</p> <p>Once a particular vector is fully materialized the speed for all subsequent operations should be identical to a normal R vector.</p> <p>This approach potentially also allows you to work with data that is larger than memory. As long as you are careful to avoid materializing the entire dataset at once it can be efficiently queried and subset.</p> </div> <div id="reading-delimited-files" class="section level1"> <h1>Reading delimited files</h1> <p>The following benchmarks all measure reading delimited files of various sizes and data types. Because vroom delays reading the benchmarks also do some manipulation of the data afterwards to try and provide a more realistic performance comparison.</p> <p>Because the <code>read.delim</code> results are so much slower than the others they are excluded from the plots, but are retained in the tables.</p> <div id="taxi-trip-dataset" class="section level2"> <h2>Taxi Trip Dataset</h2> <p>This real world dataset is from Freedom of Information Law (FOIL) Taxi Trip Data from the NYC Taxi and Limousine Commission 2013, originally posted at <a href="https://chriswhong.com/open-data/foil_nyc_taxi/" class="uri">https://chriswhong.com/open-data/foil_nyc_taxi/</a>. It is also hosted on <a href="https://archive.org/details/nycTaxiTripData2013">archive.org</a>.</p> <p>The first table trip_fare_1.csv is 1.55G in size.</p> <pre><code>#&gt; Observations: 14,776,615 #&gt; Variables: 11 #&gt; $ medallion &lt;chr&gt; &quot;89D227B655E5C82AECF13C3F540D4CF4&quot;, &quot;0BD7C8F5B... #&gt; $ hack_license &lt;chr&gt; &quot;BA96DE419E711691B9445D6A6307C170&quot;, &quot;9FD8F69F0... #&gt; $ vendor_id &lt;chr&gt; &quot;CMT&quot;, &quot;CMT&quot;, &quot;CMT&quot;, &quot;CMT&quot;, &quot;CMT&quot;, &quot;CMT&quot;, &quot;CMT... #&gt; $ pickup_datetime &lt;chr&gt; &quot;2013-01-01 15:11:48&quot;, &quot;2013-01-06 00:18:35&quot;, ... #&gt; $ payment_type &lt;chr&gt; &quot;CSH&quot;, &quot;CSH&quot;, &quot;CSH&quot;, &quot;CSH&quot;, &quot;CSH&quot;, &quot;CSH&quot;, &quot;CSH... #&gt; $ fare_amount &lt;dbl&gt; 6.5, 6.0, 5.5, 5.0, 9.5, 9.5, 6.0, 34.0, 5.5, ... #&gt; $ surcharge &lt;dbl&gt; 0.0, 0.5, 1.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0, 0... #&gt; $ mta_tax &lt;dbl&gt; 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0... #&gt; $ tip_amount &lt;int&gt; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0... #&gt; $ tolls_amount &lt;dbl&gt; 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.8, 0.0, 0... #&gt; $ total_amount &lt;dbl&gt; 7.0, 7.0, 7.0, 6.0, 10.5, 10.0, 6.5, 39.3, 7.0...</code></pre> <div id="taxi-benchmarks" class="section level3"> <h3>Taxi Benchmarks</h3> <p>code: <a href="https://github.com/tidyverse/vroom/tree/main/inst/bench/taxi">bench/taxi</a></p> <p>All benchmarks were run on a Amazon EC2 <a href="https://aws.amazon.com/ec2/instance-types/m5/">m5.4xlarge</a> instance with 16 vCPUs and an <a href="https://aws.amazon.com/ebs/">EBS</a> volume type.</p> <p>The benchmarks labeled <code>vroom_base</code> uses <code>vroom</code> with base functions for manipulation. <code>vroom_dplyr</code> uses <code>vroom</code> to read the file and dplyr functions to manipulate. <code>data.table</code> uses <code>fread()</code> to read the file and <code>data.table</code> functions to manipulate and <code>readr</code> uses <code>readr</code> to read the file and <code>dplyr</code> to manipulate. By default vroom only uses Altrep for character vectors, these are labeled <code>vroom(altrep: normal)</code>. The benchmarks labeled <code>vroom(altrep: full)</code> instead use Altrep vectors for all supported types and <code>vroom(altrep: none)</code> disable Altrep entirely.</p> <p>The following operations are performed.</p> <ul> <li>The data is read</li> <li><code>print()</code> - <em>N.B. read.delim uses <code>print(head(x, 10))</code> because printing the whole dataset takes &gt; 10 minutes</em></li> <li><code>head()</code></li> <li><code>tail()</code></li> <li>Sampling 100 random rows</li> <li>Filtering for “UNK” payment, this is 6434 rows (0.0435% of total).</li> <li>Aggregation of mean fare amount per payment type.</li> </ul> <img src="data:image/png;base64,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CCCAQNkECIDLRs2OEEAAAQQQQAABBBBAAAEEKilAAFxJffaNAAIIIIAAAggggAACCCBQNgEC4LJRsyMEEEAAAQQQQAABBBBAAIFKChAAV1KffSOAAAIIIIAAAggggAACCJRNgAC4bNTsCAEEEEAAAQQQQAABBBBAoJICBMCV1GffCCCAAAIIIIAAAggggAACZRMgAC4bNTtCAAEEEEAAAQQQQAABBBCopAABcCX12TcCCCCAAAIIIIAAAggggEDZBAiAy0bNjhBAAAEEEEAAAQQQQAABBCopQABcSX32jQACCCCAAAIIIIAAAgggUDYBAuCyUbMjBBBAAAEEEEAAAQQQQACBSgoQAFdSn30jgAACCCCAAAIIIIAAAgiUTYAAuGzU7AgBBBBAAAEEEEAAAQQQQKCSAgTAldRn3wgggAACCCCAAAIIIIAAAmUTIAAuGzU7QgABBBBAAAEEEEAAAQQQqKQAAXAl9RvAvoMgsCeffNL0SkIAAQQQQAABBBBAAAEE0ixAAJzm2s2jbBs2bLAbb7yRADgPKxZBAAEEEEAAAQQQQACBZAsQACes/pYtW2Zff/21ffrpp5mcr1271ubMmWOrVq3KTNOb9evX28cff2wfffSRXyc686uvvvLToy2/2q62oX0sXbo0ujjvEUAAAQQQQAABBBBAAIHECzRLfAkaWQHOOOMM69u3r82cOdPGjBlj69ats2uuuca22more/fdd+3iiy+2I444wj744AO76qqrbOONN7bFixebguS7777bOnToYNOmTfPr9unTxwfJIeHbb79t48aN88Fvs2bNbNKkSdakSZNwNq8IIIAAAggggAACCCCAQKIFCIATWH377LOPjR071genl156qY0YMcJ22203++KLL3wAPGTIEHv99ddt6NChduSRR/oSDh8+3F599VXbd999bdSoUT7Q3W677ezpp5+2GTNmZBTUkvzwww9b165dCX4zKrxBAAEEEEAAAQQQQACBNAgQACewFnfaaScfnC5ZssTeeOMNmzx5sk2ZMsWXZMWKFT6gPfbYY2369Ol2zz332KxZs3xXaLUCz50711q2bGn9+vXzy++1115VBHr16mXdu3evMo0PCCCAAAIIIIAAAggggEAaBAiAE1iLrVu3zuRaXZWPOuoo06uSAt9NN93Ut/CqNVfdodUi/Mtf/tLPb968ue/2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8bEyAggggAACCCCAAAIIIIBAUgQIgJNSU+QTAQQQQAABBBBAAAEEEECgJAEC4JL4WBkBBBBAAAEEEEAAAQQQQCApAgTASakp8okAAggggAACCCCAAAIIIFCSAAFwSXysjAACCCCAAAIIIIAAAgggkBQBAuCk1BT5RAABBBBAAAEEEEAAAQQQKEmAALgkPlZGAAEEEEAAAQQQQAABBBBIigABcFJqinwigAACCCCAAAIIIIAAAgiUJEAAXBIfKyOAAAIIIIAAAggggAACCCRFoFlSMlpTPmfMmGEtW7a0rbfeOudikydPtv33399at25ta9eu9cvnXLgMM+bNm2evv/56tT0NHDjQevTokZk+depU6927t2277baZae+//76tWLHCdtlll8y06JsPP/zQ/vnPf9qXX35p22yzjWmbSl999ZXJIS4dffTRtmzZMp+nAw44IG4RpiGAAAIIIIAAAggggAACiRZIfAvwhg0b7De/+Y1tvvnmNVbE7bffbsuXL7evv/7azjjjjBqXLcdMBe0TJkyw9957r8rfqlWrMrv/+OOPbdy4cXbzzTdnpunN9OnT7c9//nOVaeGHl156yS655BJTkLxy5Ur71a9+Zddcc42fvWbNGrvxxhvtnXfeqbJP5UGpY8eOpoB76dKl/jP/IIAAAggggAACCCCAAAJpEii6BVjBlILPNm3aZDyWLFlinTt39i2Jbdu2tYULF1qvXr0y89Xq2aVLF9O8aNJ6ap2MtnyqNVIB2Weffeb30aFDBx+86vNmm22WWf2ZZ57xLaFqAQ7TF198YfrTvqP503wFd/Pnz7ea8qoW4k8++cTnJ8zr6tWrrWnTpqZy6y+a13C/hb6qZfeHP/xhztWefvppO+6443yr7axZs2ps4Q438vjjj9uwYcNMLbpKQ4cOtRNPPNEUTMtQSQFyq1at/Pvsf4499lgfmF922WXZs/iMAAIIIIAAAggggAACCCRaoOgA+LXXXrPf/va3dtddd3kAtSqOHj3aHnzwQd/C2rdvX5s5c6aNGTPGt7xquU6dOvmWx/PPP98HdosWLbLrrrvOB8wKTLfaaiu/vALNs846ywYMGGCLFy/265x55pk2ZcoUHzwrGL3vvvt8QPq73/0u00Kq1t2rrrrKFixY4INn5Umf995770wl3X///RYEgc+r8qbW4Ghe161b51tMlZd3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IIAAAggggAACCMQKEADHsjARAQQQQAABBBBAAAEEEEAgbQIEwGmrUcqDAAIIIIAAAggggAACCCAQK0AAHMvCRAQQQAABBBBAAAEEEEAAgbQJEACnrUYpDwIIIIAAAggggAACCCCAQKwAAXAsCxMRQAABBBBAAAEEEEAAAQTSJkAAnLYapTwIIIAAAggggAACCCCAAAKxAgTAsSxMRAABBBBAAAEEEEAAAQQQSJsAAXDaapTyIIAAAggggAACCCCAAAIIxAoQAMeyMBEBBBBAAAEEEEAAAQQQQCBtAgTAaatRyoMAAggggAACCCCAAAIIIBArQAAcy8JEBBBAAAEEEEAAAQQQQACBtAkQAKetRikPAggggAACCCCAAAIIIIBArAABcCwLExFAAAEEEEAAAQQQQAABBNImQACcthqlPAgggAACCCCAAAIIIIAAArECBMCxLExEAAEEEEAAAQQQQAABBBBImwABcNpqlPIggAACCCCAAAIIIIAAAgjEChAAx7IwEQEEEEAAAQQQQAABBBBAIG0CBMBpq1HKgwACCCCAAAIIIIAAAgggECtAABzLwkQEEEAAAQQQQAABBBBAAIG0CRAAp61GKQ8CCCCAAAIIIIAAAggggECsAAFwLAsTEUAAAQQQQAABBBBAAAEE0iZAAJy2GqU8CCCAAAIIIIAAAggggAACsQIEwLEsTEQAAQQQQAABBBBAAAEEEEibAAFw2mqU8iCAAAIIIIAAAggggAACCMQKEADHsjARAQQQQAABBBBAAAEEEEAgbQIEwGmrUcqDAAIIIIAAAggggAACCCAQK0AAHMvCRAQQQAABBBBAAAEEEEAAgbQJEACnrUYpDwIIIIAAAggggAACCCCAQKwAAXAsCxMRQAABBBBAAAEEEEAAAQTSJkAAnLYapTwIIIAAAggggAACCCCAAAKxAgTAsSxMRAABBBBAAAEEEEAAAQQQSJsAAXDaapTyIIAAAggggAACCCCAAAIIxAoQAMeyMBEBBBBAAAEEEEAAAQQQQCBtAgTAaatRyoMAAggggAACCCCAAAIIIBArQAAcy8JEBBBAAAEEEEAAAQQQQACBtAkQAKetRikPAggggAACCCCAAAIIIIBArECz2KlMRKCCApMGXWTz58+vYA4qs+vOnTvbkiVLKrPzCu61R48etnLlSlu1alUFc1H+Xbdq1crvdM2aNeXfeRF7XDzg+ILXatW1+irt2rWztm3b2oIFC6rPZAoCCCBQBwKTJ0+2hQsX2vr16+tga8VtokWLFtasWTNbvXp1cRuoo7V69uxpK1asqPgxtiGc43Tq1MmaNm1qixcvriPd4jbTsWNHW758uQVBUNwG6mAtnYOoTnQs3rBhQx1sMVmboAU4WfVFbhFAAAEEEEAAAQQQQAABBIoUIAAuEo7VEEAAAQQQQAABBBBAAAEEkiVAAJys+iK3CCCAAAIIIIAAAggggAACRQoQABcJx2oIIIAAAggggAACCCCAAALJEiAATlZ9kVsEEEAAAQQQQAABBBBAAIEiBQiAi4RjNQQQQAABBBBAAAEEEEAAgWQJEAAnq77ILQIIIIAAAggggAACCCCAQJECBMBFwrEaAggggAACCCCAAAIIIIBAsgQIgJNVX+QWAQQQQAABBBBAAAEEEECgSAEC4CLhWA0BBBBAAAEEEEAAAQQQQCBZAgTAyaovcosAAggggAACCCCAAAIIIFCkQLMi12M1BOpNYOiU20ve9v0vTPXbaH7qjKK2NfeT04tar5SV5peycoLX/dDlveuelyS4BGQdAQQQQKAhCQwePLghZYe8IJBagQkTJiSybLQAJ7LayDQCCCCAAAIIIIAAAggggEChAgTAhYqxPAIIIIAAAggggAACCCCAQCIFCIATWW1kGgEEEEAAAQQQQAABBBBAoFABAuBCxVgeAQQQQAABBBBAAAEEEEAgkQIEwImsNjKNAAIIIIAAAggggAACCCBQqAABcKFiLI8AAggggAACCCCAAAIIIJBIAQLgRFYbmUYAAQQQQAABBBBAAAEEEChUgAC4UDGWRwABBBBAAAEEEEAAAQQQSKQAAXAiq41MI4AAAggggAACCCCAAAIIFCpAAFyoGMsjgAACCCCAAAIIIIAAAggkUoAAOJHVRqYRQAABBBBAAAEEEEAAAQQKFSAALlSM5RFAAAEEEEAAAQQQQAABBBIpQACcyGoj0wgggAACCCCAAAIIIIAAAoUKEAAXKsbyCCCAAAIIIIAAAggggAACiRQgAE5ktZFpBBBAAAEEEEAAAQQQQACBQgUIgAsVY3kEEEAAAQQQQAABBBBAAIFEChAAJ7LayDQCCCCAAAIIIIAAAggggEChAgTAhYqxPAIIIIAAAggggAACCCCAQCIFCIATWW1kGgEEEEAAAQQQQAABBBBAoFABAuBCxVgeAQQQQAABBBBAAAEEEEAgkQIEwImsNjKNAAIIIIAAAggggAACCCBQqAABcKFiLI8AAggggAACCCCAAAIIIJBIAQLgRFYbmUYAAQQQQAABBBBAAAEEEChUgAC4UDGWRwABBBBAAAEEEEAAAQQQSKQAAXAiq41MI4AAAggggAACCCCAAAIIFCpAAFyoGMsjgAACCCCAAAIIIIAAAggkUoAAOJHVRqYRQAABBBBAAAEEEEAAAQQKFSAALlSM5RFAAAEEEEAAAQQQQAABBBIpQACcyGoj0wgggAACCCCAAAIIIIAAAoUKEAAXKsbyCCCAAAIIIIAAAggggAACiRQgAE5ktZFpBBBAAAEEEEAAAQQQQACBQgUIgAsVY3kEEEAAAQQQQAABBBBAAIFEChAAJ7LayDQCCCCAAAIIIIAAAggggEChAgTAhYqxPAIIIIAAAggggAACCCCAQCIFCIATWW1kGgEEEEAAAQQQQAABBBBAoFABAuBCxVgeAQQQQAABBBBAAAEEEEAgkQIEwImsNjKNAAIIIIAAAggggAACCCBQqAABcKFiLI8AAggggAACCCCAAAIIIJBIAQLgRFYbmUYAAQQQQAABBBBAAAEEEChUgAC4UDGWRwABBBBAAAEEEEAAAQQQSKRAs0TmOo9Mf/nll/bXv/7VDjvssJxLv/HGG9a2bVvr27evX2bt2rXWsmXLnMvX94xXXnnFPv/882q7ad68uR188ME2efLkzLwmTZpY9+7d7Rvf+IZ17tzZT587d64tWLDABg4cmFlOb7Tennvuaa1bt66yjehCRx99tC1btsxef/11O+CAA6KzeI8AAggggAACCCCAAAIIpEIgtS3ADz30kHXr1q3GSpo6dar94x//8MuMGzfOpk+fXuPy9T3zk08+sffee8//3Xzzzfbaa6/597NnzzYF9DfeeKPNmzfPPv30U//64IMP2plnnmkKfJUUvD7++OP+ffSf22+/3QfGa9as8dt45513MvsJ96flO3bsaDJZunRpdHXeI4AAAggggAACCCCAAAKpEKjTFuD169fbypUrfSAV6qxatcqaNWtmmqfXRYsW2cYbb+zfaxkFdF26dPEtseE6el23bp0P9DbddNPMsqtXr/bvNU9BmuYpKSDs2rVrpvV28eLF9u9//9uGDRvm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