Update ruby-prof to 1.3.1
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