<p><div><div><div><div data-width="100" data-show-faces="false" data-send="true" data-layout="button_count" data-height="21" data-href="http://www.r-bloggers.com/rperform-in-google-summer-of-code-2016/"></div></div><div><a data-url="http://www.r-bloggers.com/rperform-in-google-summer-of-code-2016/" data-counturl="http://www.r-bloggers.com/rperform-in-google-summer-of-code-2016/" data-count="horizontal" data-text="Rperform in Google Summer of Code 2016" class="twitter-share-button" data-via="rbloggers" href="https://twitter.com/share"></a></div><div></div></div><div></div></div>
<div>
(This article was first published on <strong><a href="https://techandmortals.wordpress.com/2016/05/21/rperform-in-google-summer-of-code-2016/"> R – Tech and Mortals</a></strong>, and kindly contributed to <a rel="nofollow" href="http://www.r-bloggers.com/">R-bloggers)</a> </div>
<p><a target="_blank" href="http://github.com/analyticalmonk/rperform/">Rperform</a> had started as a <a target="_blank" href="https://github.com/rstats-gsoc/gsoc2015/wiki/Test-timings-on-Travis">GSoC 2015 project</a> with an aim to “<em>to provide a package with functions that make it easy for R package developers to track quantitative performance metrics of their code, over time.</em>” Much of the functionality required for the same was implemented over the course of last summer. This included various <a target="_blank" href="https://github.com/analyticalmonk/Rperform/wiki/Plotting-package-metrics-with-Rperform">performance visualization functions</a> and <a target="_blank" href="https://github.com/analyticalmonk/Rperform/wiki/Integrating-Rperform-with-Travis-CI">integration with the Travis-CI workflow</a>, among other things.</p>
<p>The project has been <a target="_blank" href="https://summerofcode.withgoogle.com/projects/?sp-search=akashtndn#5195867359281152">accepted into the GSoC program</a> again under the organization, <a target="_blank" href="https://github.com/rstats-gsoc/"><em>R project for statistical computing</em></a>. I will be working on it over the summer with my mentors, <a target="_blank" href="https://github.com/tdhock">Toby Dylan Hocking</a> and <a target="_blank" href="https://github.com/joshuaulrich">Joshua Ulrich</a>.</p>
<p><img alt="gsoc2016" class="wp-image-426" src="https://techandmortals.files.wordpress.com/2016/05/gsoc2016.png?w=720"></p>
<p>Some of the most important questions that Rperform could answer are “does this Pull Request change the speed or memory usage of my R package?” and “which commit contains the bit of code that slowed down my R package?” Rperform needs to provide the answers to these questions in the best manner possible. Towards that end, the main focus of this year’s GSoC project is improvement of visualization functions, improving integration with Travis-CI and the development of a useful UI. Some of these aspects are explored below.</p>
<h4>Travis-CI integration</h4>
<p>As of now, R package developers using Travis-CI for continuous integration on Github can integrate Rperform into their workflow. This can be done by including some simple scripts in their repo and setting up a <a target="_blank" href="https://help.github.com/articles/creating-project-pages-manually/">gh-page</a>.This will allow them to generate reports (in the form of a webpage) featuring memory and run-time analysis of their code. More details can be found on the project’s <a target="_blank" href="https://github.com/analyticalmonk/rperform/wiki">wiki</a>.</p>
<p>However, there’s something even cooler which we plan to implement. <em>We can use Rperform to be able to obtain the impact an incoming pull request (PR) would have on our packages’s performance.</em> <em>And that too without having to merge it first!</em><br>
Sounds slick, right?! As it happens, that’s one of the trickier parts of this project. I will be exploring this particular issue in a separate post. (Hopefully, it would have been resolved by then.)</p>
<h4>Visualization capabilities</h4>
<p>Below is a sample visualization generated by Rperform. It measures the runtime performance of a unit test from <a target="_blank" href="https://github.com/hadley/stringr">stringr</a> package over the past 10 commits. stringr’s author, <a target="_blank" href="https://twitter.com/hadleywickham">Hadley Wickham</a>, happens to be one of the project mentors from last year.</p>
<p><img height="395" alt="stringr_plottime" width="593" class="wp-image-346" src="https://techandmortals.files.wordpress.com/2016/05/stringr_plottime.jpeg?w=593&h=395"></p>
<p>One of the ways in which the above could be made more interactive is by providing user with details (date, author, etc) when hovering over a datapoint. This could be achieved by using a library such as <a target="_blank" href="https://rstudio.github.io/dygraphs/">dygraphs</a>. Such are the additions which I seek to add to Rperform’s existing visualization capabilities.</p>
<h4>User Interface</h4>
<p>Development of a coherent and useful UI is essential to allow developers to interact meaningfully with the analysis results obtained for their packages’ code. This part of the project derives its inspiration from similar projects in other languages (primarily Python) such as <a target="_blank" href="https://github.com/spacetelescope/asv">asv</a> and <a target="_blank" href="https://github.com/tobami/codespeed">codespeed</a>, to name a few.</p>
<h5>Road ahead…</h5>
<p>The end goal for the package remains the same as stated earlier. The work I intend to do in the next few months will hopefully result in the package becoming an integral part of the R developer toolbox.</p>
<p><strong><span>Note</span>:<br>
If you are an R package developer, please <a target="_blank" href="http://github.com/analyticalmonk/rperform/">try out Rperform</a> on your code and provide feedback if possible. Drop me a <a target="_blank" href="mailto:akashtndn.acm@gmail.com">mail</a>, or hit me up on <a target="_blank" href="http://twitter.com/AkashTandon">Twitter</a>, <a target="_blank" href="http://github.com/analyticalmonk">Github</a> or <a target="_blank" href="https://www.quora.com/profile/Akash-Tandon-1">Quora</a>.</strong><br>
<strong>If any problem arises, please <a target="_blank" href="http://github.com/analyticalmonk/rperform/issues">open an issue</a> on Github.</strong></p>
<p><strong> </strong></p>
<p> </p>
<p> <a target="_blank" rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/techandmortals.wordpress.com/310/"><img alt="" src="http://feeds.wordpress.com/1.0/comments/techandmortals.wordpress.com/310/" border="0"></a> <img height="1" alt="" width="1" src="https://pixel.wp.com/b.gif?host=techandmortals.wordpress.com&blog=91879015&%23038;post=310&%23038;subd=techandmortals&%23038;ref=&%23038;feed=1" border="0"></p>
<p><div><div><div><div data-width="55" data-show-faces="false" data-send="true" data-layout="box_count" data-height="62" data-href="http://www.r-bloggers.com/rperform-in-google-summer-of-code-2016/"></div></div><div><a data-url="http://www.r-bloggers.com/rperform-in-google-summer-of-code-2016/" data-counturl="http://www.r-bloggers.com/rperform-in-google-summer-of-code-2016/" data-count="vertical" data-text="Rperform in Google Summer of Code 2016" class="twitter-share-button" data-via="rbloggers" href="https://twitter.com/share"></a></div><div></div></div><div></div></div>
<div>
<div>To <strong>leave a comment</strong> for the author, please follow the link and comment on their blog: <strong><a href="https://techandmortals.wordpress.com/2016/05/21/rperform-in-google-summer-of-code-2016/"> R – Tech and Mortals</a></strong>.</div>
<hr>
<a rel="nofollow" href="http://www.r-bloggers.com/">R-bloggers.com</a> offers <strong><a rel="nofollow" href="http://feedburner.google.com/fb/a/mailverify?uri=RBloggers">daily e-mail updates</a></strong> about <a title="The R Project for Statistical Computing" rel="nofollow" href="http://www.r-project.org/">R</a> news and <a title="R tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=tutorial">tutorials</a> on topics such as: <a title="Data science" rel="nofollow" href="http://www.r-bloggers.com/?s=data%20science">Data science</a>, <a title="Big Data" rel="nofollow" href="http://www.r-bloggers.com/?s=Big%20Data">Big Data, <a title="R jobs" rel="nofollow" href="http://www.r-users.com/">R jobs</a>, visualization (<a title="ggplot and ggplot2 tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=ggplot2">ggplot2</a>, <a title="Boxplots using lattice and ggplot2 tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=boxplot">Boxplots</a>, <a title="Maps and gis" rel="nofollow" href="http://www.r-bloggers.com/?s=map">maps</a>, <a title="Animation in R" rel="nofollow" href="http://www.r-bloggers.com/?s=animation">animation</a>), programming (<a title="RStudio IDE for R" rel="nofollow" href="http://www.r-bloggers.com/?s=RStudio">RStudio</a>, <a title="Sweave and literate programming" rel="nofollow" href="http://www.r-bloggers.com/?s=sweave">Sweave</a>, <a title="LaTeX in R" rel="nofollow" href="http://www.r-bloggers.com/?s=LaTeX">LaTeX</a>, <a title="SQL and databases" rel="nofollow" href="http://www.r-bloggers.com/?s=SQL">SQL</a>, <a title="Eclipse IDE for R" rel="nofollow" href="http://www.r-bloggers.com/?s=eclipse">Eclipse</a>, <a title="git and github, Version Control System" rel="nofollow" href="http://www.r-bloggers.com/?s=git">git</a>, <a title="Large data in R using Hadoop" rel="nofollow" href="http://www.r-bloggers.com/?s=hadoop">hadoop</a>, <a title="Web Scraping of google, facebook, yahoo, twitter and more using R" rel="nofollow" href="http://www.r-bloggers.com/?s=Web+Scraping">Web Scraping</a>) statistics (<a title="Regressions and ANOVA analysis tutorials" rel="nofollow" href="http://www.r-bloggers.com/?s=regression">regression</a>, <a title="principal component analysis tutorial" rel="nofollow" href="http://www.r-bloggers.com/?s=PCA">PCA</a>, <a title="Time series" rel="nofollow" href="http://www.r-bloggers.com/?s=time+series">time series</a>, <a title="finance trading" rel="nofollow" href="http://www.r-bloggers.com/?s=trading">trading</a>) and more...
<img height="1" alt="" width="1" src="http://feeds.feedburner.com/~r/RBloggers/~4/y7J_IdnqzZY"></a></div>