Skip to content

Update ruby-prof to 1.3.1

Sean McGivern requested to merge update-rubyprof into master

What does this MR do?

This contains Ruby 2.7 support, some bug fixes, and upstream support sufficient to replace our TotalTimeFlatPrinter.

From https://github.com/ruby-prof/ruby-prof/blob/master/CHANGES:

1.3.1 (2020-03-11)
=====================
* Add max_percent and filter_by options to flat printer (Sean McGivern)
* Include binary in mingw64 build (Charlie Savage)

1.3.0 (2020-02-22)
=====================
* Update C code to use newer RTypedData API versus older RData API.
* Update C code to use rb_cObject versus the older, deprecated, rb_cData.
* Update memory management - CallInfo's now keep alive their owning Profile instances. Fixes crashes that
  could happen in rare instances.

1.2.0 (2020-01-23)
=====================
* Fix call stack printer broken in version 1.0.0 (Charlie Savage)
* Ruby 2.7.0 support (Charlie Savage)
* Switch to Windows high precision timer for measuring wall time (Charlie Savage)
* Much better support for reverse call trees - if you start RubyProf at the bottom
  of a call tree it will correctly calculate times as it ascends the tree (Charlie Savage)
* Port AggregateCallInfo from Ruby to C to increase performance
* API change - CallInfo has been renamed CallTree
* Fix crashes on Ruby 2.4.*

1.1.0 (2019-12-14)
=====================
Changes

* Reimplement merge_fibers (Charlie Savage)
* Fix crash caused by threads being freed when profiles are freed (Charlie Savage)

I tested this out locally with things like:

result = Gitlab::Profiler.profile('/root')
Gitlab::Profiler.print_by_total_time(result, max_percent: 90, min_percent: 20)
Gitlab::Profiler.print_by_total_time(result, max_percent: 60, min_percent: 20)

And the results look correct.

Closes #204771 (closed).

Edited by Sean McGivern

Merge request reports