Skip to content

Latest commit

 

History

History
71 lines (46 loc) · 2.39 KB

README.md

File metadata and controls

71 lines (46 loc) · 2.39 KB

xcode-build-times-rendering

Xcode build times visualization per target image

Installation

[sudo] gem install xcode-build-times

Injection in your project

In order to gather target build times, run the following command. This will add script build phases named "Timing START" and "Timing END" for EACH target in EACH project at specified path.

xcode-build-times install ~/Projects/<My_slowly_building_project>/

image

Events file

Once you've run the install command above, all build events will be saved to ~/.timings.xcode file every time you build your project.
NOTE: You can override this default setting by passing --events-file parameter on installation script

...
{"date":"2018-09-19T22:52:04.1537386724", "taskName":"A", "event":"start"},
{"date":"2018-09-19T22:53:01.1537386781", "taskName":"A", "event":"end"},
{"date":"2018-09-19T22:53:04.1537386784", "taskName":"B", "event":"start"},
{"date":"2018-09-19T22:55:53.1537386953", "taskName":"V", "event":"end"},
...

Generating Visualization Events

Once desired build is done, it's time to dump raw events in place we need in order to render them. This can be done by running:

xcode-build-times generate [--events-file <path>]

NOTE: You can use a different timings file by passing --events-file parameter

Open gantt.html

It's time to see results. Just open xcode-build-times-chart/gantt.html.

Uninstallation

Once you are done benchmarking your project and want to remove the "Timing START' / "Timing END" build phases from your projects, just run:

xcode-build-times uninstall ~/Projects/<My_slowly_building_project>/

(You can also delete your events file and the xcode-build-times-chart/ containing your reports)


Libraries and Kudos

d3js - JavaScript library for manipulating documents based on data
xcodeproj - Create and modify Xcode projects from Ruby.
d3js-gantt - Gantt chart for d3js by @dk8996

P.S.

If something doesn't work - please fix it