• Stars
    star
    1,206
  • Rank 38,845 (Top 0.8 %)
  • Language
    Groovy
  • License
    Apache License 2.0
  • Created over 10 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Gradle plugin to continuously track and report your build times

Build Time Tracker

Build Status Maven Version Stories in Ready

How much time do you spend each day waiting for Gradle? Now you know!

Features

  • Sortable bar chart summaries
  • CSV output
  • Daily and total summary

Screenshot

Screenshot

Usage

Apply the plugin in your build.gradle. On Gradle >2.1 you can do this using the Plugin DSL Syntax:

plugins {
  id "net.rdrei.android.buildtimetracker" version "0.11.0"
}

Otherwise, use it as classpath dependency:

buildscript {
  repositories {
    mavenCentral()
  }

  dependencies {
    classpath "net.rdrei.android.buildtimetracker:gradle-plugin:0.11.+"
  }
}

apply plugin: "build-time-tracker"

Configure the plugin:

buildtimetracker {
  reporters {
    csv {
      output "build/times.csv"
      append true
      header false
    }

    summary {
      ordered false
      threshold 50
      barstyle "unicode"
    }

    csvSummary {
      csv "build/times.csv"
    }
  }
}

Using the SNAPSHOT release:

buildscript {
  repositories {
    maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
  }

  dependencies {
    classpath "net.rdrei.android.buildtimetracker:gradle-plugin:0.12.0-SNAPSHOT"
  }
}

Difference to --profile

You may wonder why you would want to use this plugin when gradle has a built-in build profiler. The quick version is, that if you just want to quickly check what it is that's slowing down your build, --profile will be all you need. However, if you want to continuously monitor your build and find bottlenecks that develop over time, this plugin may be the right fit for you. build-time-tracker writes a continuous log that is monoidal and can be collected from various different machines to run statistical analyses. Importantly, the written files contain identifying information about the machine the build happened on so you can compare apples with apples.

Reporters

CSVReporter

The csv reporter takes the following options:

  • output: CSV output file location relative to Gradle execution.
  • append: When set to true the CSV output file is not truncated. This is useful for collecting a series of build time profiles in a single CSV.
  • header: When set to false the CSV output does not include a prepended header row with column names. Is desirable in conjunction with append.

A basic R Markdown script, report.Rmd is included for ploting and analysing build times using CSV output.

CSVSummaryReporter

The csvSummary displays the accumulated total build time from a CSV file. The reporter takes the following option:

  • csv: Path (relative to the gradle file or absolute) to a CSV file created with the above reporter and the options append = true and header = false.

SummaryReporter

The summary reporter gives you an overview of your tasks at the end of the build. It has the following options:

  • threshold: (default: 50) Minimum time in milliseconds to display a task.
  • ordered: (default: false) Whether or not to sort the output in ascending order by time spent.
  • barstyle: (default: "unicode") Supports "unicode", "ascii" and "none" for displaying a bar chart of the relative times spent on each task.
  • successOutput: (default: "true") Redisplay build success or failure message so you don't miss it if the summary output is long.
  • shortenTaskNames: (default: "true") Shortens long tasks names.

Note This plugin only measures the task times that constitute a build. Specifically, it does not measure the time in configuration at the start of a Gradle run. This means that the time to execute a build with very fast tasks is not accurately represented in output because it is dominated by the time in configuration instead.

Developing

This project is built and tested by Travis at passy/build-time-tracker-plugin.

Acknowledgements

Thanks to Sindre Sorhus for contributing the wonderful logo!

License

Copyright 2014 Pascal Hartig

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

awesome-recursion-schemes

Resources for learning and using recursion schemes.
1,210
star
2

angular-masonry

An AngularJS directive for Masonry.
CoffeeScript
1,118
star
3

Android-DirectoryChooser

A directory chooser library for Android.
Java
514
star
4

awesome-purescript

A curation of awesome PureScript libraries, resources and shiny things.
447
star
5

scdl

Soundcloud Downloader App for Android
Java
301
star
6

givegif

GIFs on the command line
Haskell
221
star
7

autoprefixer-loader

Webpack loader for autoprefixer
JavaScript
217
star
8

android-lint-summary

Prettier display of Android Lint issues
Haskell
178
star
9

x-pokemon

A web component to display Pokémon.
HTML
89
star
10

google-cdn

Replaces references to resources on the Google CDN
JavaScript
70
star
11

react-pokemon

A React component for displaying Pokémon
HTML
58
star
12

generator-heroku

A Heroku config generator for Yeoman
JavaScript
45
star
13

angular-google-staticmaps

An AngularJS directive to quickly insert Google Static Maps.
CoffeeScript
38
star
14

raspbian-vpn-router

Setting up a Raspberry Pi 3 as a VPN Gateway
Shell
33
star
15

generator-bookmarklet

Yeoman Generator for Bookmarklets
JavaScript
33
star
16

ama

Ask Me Anything
33
star
17

flask-gae-mini-profiler

Flask extension for easy profiling on Google App Engine
Python
33
star
18

elm-pokemon

Elm
28
star
19

giphy-api

Giphy HTTP API Wrapper for Haskell
Haskell
27
star
20

ltxbot

A Twitter bot that renders LaTeX for you
Haskell
21
star
21

ctlmngr

A manager for custom timelines
JavaScript
21
star
22

sindrebday

Sindre has circled around the sun once more
HTML
18
star
23

rss-markdown-proxy

A reverse proxy for rendering Markdown within RSS feeds
Haskell
18
star
24

nose-notify

Desktop notifications via notify-osd for nose tests
Python
16
star
25

coding-puzzles

Some public coding puzzles
Haskell
15
star
26

node-dom-urls

A partial implementation of the W3C URL Spec Draft for Node
JavaScript
15
star
27

purescript-errors

Handy error handling combinators for PureScript
PureScript
15
star
28

tweetdock

An experiment architecting something like TweetDeck with Flight.
JavaScript
15
star
29

revmenu

Navigate to git/hg revisions in your terminal using your keyboard.
Rust
12
star
30

cows-hs

ASCII 🐮s
Haskell
12
star
31

latest-npm-version

Get the latest version of a package on npm
Haskell
12
star
32

attic-schedule

A Turtle script I use to kick off attic
Haskell
11
star
33

Horse.hs

Tweet like a Horse
Haskell
10
star
34

podserve

Serve a podcast feed from a directory with MP3s in it.
Rust
10
star
35

passy.me

My homepage
JavaScript
10
star
36

financius-notebook

An IPython Notebook I use to crunch my Financius data
Jupyter Notebook
8
star
37

nose-lettuce

A probably bad idea of how to run lettuce from nose
Python
8
star
38

blog

Articles I've written
7
star
39

Android-ViewPagerIndicator-AAR

AAR fork of Jake Wharton's ViewPagerIndicator
Java
7
star
40

firebase-functions-webpack-example

Firebase Cloud Functions + TypeScript + PureScript + Webpack
JavaScript
7
star
41

purescript-simple-moment

A minimal PureScript wrapper around moment.js
PureScript
7
star
42

hls-proxy

A reverse HTTP proxy that may eventually do things
Haskell
6
star
43

optparse-text

Helpers for optparse-applicative to deal with Data.Text
Haskell
6
star
44

flight-knockout

Easy data-bindings in Flight with Knockout
JavaScript
6
star
45

rust-tracerayer

A toy ray tracer in Rust.
Rust
6
star
46

absshadow-sample

Sample Android project showing how to test ActionBarSherlock with Robolectric
Java
6
star
47

twentiment

Research project on sentiment analysis using the Naïve Bayes Classificator
Python
6
star
48

Android-LintSummarySample

Example of how to use android-lint-summary with gradle
Java
6
star
49

collab-counter

A distributed, eventually consistent counter with magical powers
Elm
5
star
50

backbone.datalink

Wrapper around Synapse for easy data binding between models and views.
CoffeeScript
5
star
51

tube-roundel

Web service for rendering TfL Tube roundels.
Haskell
5
star
52

tweetproxy

An authenticated Twitter API proxy in Haskell. (WIP)
Haskell
5
star
53

twoxpy

A super limited Twitter API OAuth signing proxy
Python
5
star
54

glashammer-rdrei

Fork of Glashammer adding some custom patches
Python
5
star
55

simstatus

Android Application to check for the Sim City Server Status
Java
5
star
56

raspbian-home-server

Shell
4
star
57

soccer-stats-backend

Backend for my soccer prediction app doing some calculations with NumPy
Python
4
star
58

todomvc-purescript-react

Nothing to see here, move along!
PureScript
4
star
59

angular-dart-todomvc

Work in progress
Dart
4
star
60

rdreiflask

My old flask-based homepage. No longer under development or in use.
JavaScript
4
star
61

r3bb

A (really) tiny jQuery based WYSIWYG editor that outputs bbcode
JavaScript
4
star
62

OfflineArticles

[WIP] Offline reading app for Android
HTML
4
star
63

giflib

A PureScript experiment that is supposed to be a personal gif library
PureScript
4
star
64

raspbian-ipv6-router

A Raspberry Pi config to use it as DHCP/RA server
Shell
4
star
65

tube-trains-bot

A Google Home action allowing you to ask for TfL Tube departures.
Haskell
4
star
66

peano

Basic Peano numbers in Haskell
Haskell
4
star
67

playground

Everyone likes to play.
HTML
4
star
68

carbon-intensity-bot

A Google Home bot to enquire about your local electricity's carbon intensity.
TypeScript
4
star
69

html-oust

[WIP] Extract paths of stylesheets, scripts and HTML imports from HTML files
Haskell
3
star
70

simpledownloader

Playground for mono and gtk#
C#
3
star
71

dotvim

My neovim configuration
Vim Script
3
star
72

mobile-restaurants

Mobile website prototypes for restaurants build with AngularJS and Yeoman.
JavaScript
3
star
73

rdreilib

Various reusable utilities for Glashammer/WSGI projects. BSD-licensed.
Python
3
star
74

ics-notebook

A Jupyter notebook for analyzing iCalendar files
Jupyter Notebook
3
star
75

bouncyball

OpenGL bouncing ball with Yampa, GLUT
Haskell
3
star
76

mycdb

Learning project re-implementing a client to read constant databases (CDBs)
C
3
star
77

wakivote

WAKiVote
JavaScript
3
star
78

tube-bot

Messenger bot frontend for the Tube disruption tracker
PureScript
2
star
79

ordered-jobs-kata-rust

Ordered Jobs Kata in Rust
Rust
2
star
80

ConnectivityAlert

Dagger 2 + Android playground
Java
2
star
81

lens-over-tea

Haskell
2
star
82

flight-view-demos

Experiments for combining FlightJS with 2-way data binding libraries
JavaScript
2
star
83

canjs-localstorage

Bower repository of the localStorage plugin for CanJS
JavaScript
2
star
84

java-repl

java-repl for docker
2
star
85

disruption-tracker

Tracking Tube disruptions and write them to a RethinkDB
Haskell
2
star
86

financius2bluecoins

A script to migrate Financius transactions to Bluecoins
Haskell
2
star
87

soccer-stats-frontend

AngularJS-based frontend doing some soccer predictions based on simple time-independent least square regression.
CSS
2
star
88

gymahz_scripts

Scripts for the daily use at the Gymnasium Altenholz
Python
2
star
89

twime

Twitter bot in Scala
Scala
2
star
90

fakemvc

Experimenting with TodoMVC
JavaScript
2
star
91

Android-AdapterMergeExample

Android example for merging multiple adapters for one autocomplete field
Java
2
star
92

gbridge-bridge

Relay gbridge.io events to another MQTT broker. Part of my home IoT setup, but unlikely of any use to anybody else.
Rust
2
star
93

TrieSuggest

Toy program in Haskell using tries to implement some autocompletion stuff
Haskell
2
star
94

WAKiMail

Android mail client for WAK students (www.wak-sh.de)
Java
1
star
95

displaypower

Fun project enabling DPMS when gnome-screensaver turns on
C
1
star
96

photo-share

An Effective Kotlin Android App experiment
Java
1
star
97

twentiment-api

A REST-ish API for twentiment
Python
1
star
98

fun-hs

My attempt to implement @sdiehl's fun language.
Haskell
1
star
99

passyvm

Rust
1
star
100

angularjs-bcki-slides

German slides for my AngularJS session at Barcamp Kiel 2012
JavaScript
1
star