ruby-prof 1.7.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/{CHANGES → CHANGELOG.md} +118 -176
- data/README.md +5 -5
- data/bin/ruby-prof +1 -4
- data/docs/advanced-usage.md +132 -0
- data/docs/alternatives.md +98 -0
- data/docs/architecture.md +122 -0
- data/docs/best-practices.md +27 -0
- data/docs/getting-started.md +130 -0
- data/docs/history.md +11 -0
- data/docs/index.md +45 -0
- data/docs/profiling-rails.md +64 -0
- data/docs/public/examples/example.rb +33 -0
- data/docs/public/examples/generate_reports.rb +92 -0
- data/docs/public/examples/reports/call_info.txt +27 -0
- data/docs/public/examples/reports/call_stack.html +835 -0
- data/docs/public/examples/reports/callgrind.out +150 -0
- data/docs/public/examples/reports/flame_graph.html +408 -0
- data/docs/public/examples/reports/flat.txt +45 -0
- data/docs/public/examples/reports/graph.dot +129 -0
- data/docs/public/examples/reports/graph.html +1319 -0
- data/docs/public/examples/reports/graph.txt +100 -0
- data/docs/public/examples/reports/graphviz_viewer.html +1 -0
- data/docs/public/images/call_stack.png +0 -0
- data/docs/public/images/class_diagram.png +0 -0
- data/docs/public/images/dot_printer.png +0 -0
- data/docs/public/images/flame_graph.png +0 -0
- data/docs/public/images/flat.png +0 -0
- data/docs/public/images/graph.png +0 -0
- data/docs/public/images/graph_html.png +0 -0
- data/docs/public/images/ruby-prof-logo.svg +1 -0
- data/docs/reports.md +150 -0
- data/docs/stylesheets/extra.css +80 -0
- data/ext/ruby_prof/extconf.rb +23 -22
- data/ext/ruby_prof/rp_allocation.c +0 -15
- data/ext/ruby_prof/rp_allocation.h +29 -33
- data/ext/ruby_prof/rp_call_tree.c +3 -0
- data/ext/ruby_prof/rp_call_tree.h +1 -4
- data/ext/ruby_prof/rp_call_trees.c +296 -296
- data/ext/ruby_prof/rp_call_trees.h +25 -28
- data/ext/ruby_prof/rp_measure_allocations.c +47 -47
- data/ext/ruby_prof/rp_measure_process_time.c +64 -66
- data/ext/ruby_prof/rp_measure_wall_time.c +52 -64
- data/ext/ruby_prof/rp_measurement.c +0 -5
- data/ext/ruby_prof/rp_measurement.h +49 -53
- data/ext/ruby_prof/rp_method.c +554 -551
- data/ext/ruby_prof/rp_method.h +1 -4
- data/ext/ruby_prof/rp_profile.c +1 -1
- data/ext/ruby_prof/rp_profile.h +1 -5
- data/ext/ruby_prof/rp_stack.c +212 -212
- data/ext/ruby_prof/rp_stack.h +50 -53
- data/ext/ruby_prof/rp_thread.h +1 -4
- data/ext/ruby_prof/ruby_prof.c +50 -50
- data/ext/ruby_prof/ruby_prof.h +4 -6
- data/ext/ruby_prof/vc/ruby_prof.vcxproj +7 -8
- data/lib/ruby-prof/assets/call_stack_printer.html.erb +746 -711
- data/lib/ruby-prof/assets/flame_graph_printer.html.erb +412 -0
- data/lib/ruby-prof/assets/graph_printer.html.erb +355 -355
- data/lib/ruby-prof/call_tree.rb +57 -57
- data/lib/ruby-prof/call_tree_visitor.rb +36 -36
- data/lib/ruby-prof/exclude_common_methods.rb +204 -204
- data/lib/ruby-prof/measurement.rb +17 -17
- data/lib/ruby-prof/printers/abstract_printer.rb +142 -138
- data/lib/ruby-prof/printers/call_info_printer.rb +53 -53
- data/lib/ruby-prof/printers/call_stack_printer.rb +168 -180
- data/lib/ruby-prof/printers/call_tree_printer.rb +132 -145
- data/lib/ruby-prof/printers/dot_printer.rb +177 -132
- data/lib/ruby-prof/printers/flame_graph_printer.rb +79 -0
- data/lib/ruby-prof/printers/flat_printer.rb +52 -52
- data/lib/ruby-prof/printers/graph_html_printer.rb +62 -63
- data/lib/ruby-prof/printers/graph_printer.rb +112 -113
- data/lib/ruby-prof/printers/multi_printer.rb +134 -127
- data/lib/ruby-prof/profile.rb +13 -0
- data/lib/ruby-prof/rack.rb +114 -105
- data/lib/ruby-prof/task.rb +147 -147
- data/lib/ruby-prof/thread.rb +20 -20
- data/lib/ruby-prof/version.rb +3 -3
- data/lib/ruby-prof.rb +50 -52
- data/lib/unprof.rb +10 -10
- data/ruby-prof.gemspec +66 -65
- data/test/abstract_printer_test.rb +25 -27
- data/test/alias_test.rb +203 -117
- data/test/call_tree_builder.rb +126 -126
- data/test/call_tree_visitor_test.rb +27 -27
- data/test/call_trees_test.rb +66 -66
- data/test/duplicate_names_test.rb +32 -32
- data/test/dynamic_method_test.rb +50 -62
- data/test/enumerable_test.rb +23 -21
- data/test/exceptions_test.rb +24 -24
- data/test/exclude_methods_test.rb +363 -257
- data/test/exclude_threads_test.rb +48 -48
- data/test/fiber_test.rb +195 -195
- data/test/gc_test.rb +104 -102
- data/test/inverse_call_tree_test.rb +174 -174
- data/test/line_number_test.rb +563 -289
- data/test/marshal_test.rb +144 -145
- data/test/measure_allocations.rb +26 -26
- data/test/measure_allocations_test.rb +1511 -1081
- data/test/measure_process_time_test.rb +3286 -2477
- data/test/measure_times.rb +56 -56
- data/test/measure_wall_time_test.rb +773 -568
- data/test/measurement_test.rb +82 -82
- data/test/merge_test.rb +146 -146
- data/test/method_info_test.rb +100 -95
- data/test/multi_printer_test.rb +52 -66
- data/test/no_method_class_test.rb +15 -15
- data/test/pause_resume_test.rb +171 -171
- data/test/prime.rb +54 -54
- data/test/prime_script.rb +5 -5
- data/test/printer_call_stack_test.rb +28 -27
- data/test/printer_call_tree_test.rb +30 -30
- data/test/printer_flame_graph_test.rb +82 -0
- data/test/printer_flat_test.rb +99 -99
- data/test/printer_graph_html_test.rb +62 -59
- data/test/printer_graph_test.rb +42 -40
- data/test/printers_test.rb +162 -135
- data/test/printing_recursive_graph_test.rb +81 -81
- data/test/profile_test.rb +101 -101
- data/test/rack_test.rb +103 -93
- data/test/recursive_test.rb +796 -622
- data/test/scheduler.rb +4 -0
- data/test/singleton_test.rb +39 -38
- data/test/stack_printer_test.rb +61 -61
- data/test/start_stop_test.rb +106 -106
- data/test/test_helper.rb +24 -20
- data/test/thread_test.rb +229 -231
- data/test/unique_call_path_test.rb +123 -136
- data/test/yarv_test.rb +56 -60
- metadata +68 -16
- data/ext/ruby_prof/rp_measure_memory.c +0 -46
- data/lib/ruby-prof/compatibility.rb +0 -113
- data/test/compatibility_test.rb +0 -49
- data/test/crash2.rb +0 -144
- data/test/measure_memory_test.rb +0 -1456
data/ext/ruby_prof/ruby_prof.c
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
/* Copyright (C) 2005-2019 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
|
|
2
|
-
Please see the LICENSE file for copyright and distribution information */
|
|
3
|
-
|
|
4
|
-
/* ruby-prof tracks the time spent executing every method in ruby programming.
|
|
5
|
-
The main players are:
|
|
6
|
-
|
|
7
|
-
profile_t - This represents 1 profile.
|
|
8
|
-
thread_data_t - Stores data about a single thread.
|
|
9
|
-
prof_stack_t - The method call stack in a particular thread
|
|
10
|
-
prof_method_t - Profiling information about each method
|
|
11
|
-
prof_call_tree_t - Keeps track a method's callers and callees.
|
|
12
|
-
|
|
13
|
-
The final result is an instance of a profile object which has a hash table of
|
|
14
|
-
thread_data_t, keyed on the thread id. Each thread in turn has a hash table
|
|
15
|
-
of prof_method_t, keyed on the method id. A hash table is used for quick
|
|
16
|
-
look up when doing a profile. However, it is exposed to Ruby as an array.
|
|
17
|
-
|
|
18
|
-
Each prof_method_t has two hash tables, parent and children, of prof_call_tree_t.
|
|
19
|
-
These objects keep track of a method's callers (who called the method) and its
|
|
20
|
-
callees (who the method called). These are keyed the method id, but once again,
|
|
21
|
-
are exposed to Ruby as arrays. Each prof_call_into_t maintains a pointer to the
|
|
22
|
-
caller or callee method, thereby making it easy to navigate through the call
|
|
23
|
-
hierarchy in ruby - which is very helpful for creating call graphs.
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
#include "ruby_prof.h"
|
|
27
|
-
|
|
28
|
-
#include "rp_allocation.h"
|
|
29
|
-
#include "rp_measurement.h"
|
|
30
|
-
#include "rp_method.h"
|
|
31
|
-
#include "rp_call_tree.h"
|
|
32
|
-
#include "rp_call_trees.h"
|
|
33
|
-
#include "rp_profile.h"
|
|
34
|
-
#include "rp_stack.h"
|
|
35
|
-
#include "rp_thread.h"
|
|
36
|
-
|
|
37
|
-
VALUE mProf;
|
|
38
|
-
|
|
39
|
-
void Init_ruby_prof(void)
|
|
40
|
-
{
|
|
41
|
-
mProf = rb_define_module("RubyProf");
|
|
42
|
-
|
|
43
|
-
rp_init_allocation();
|
|
44
|
-
rp_init_call_tree();
|
|
45
|
-
rp_init_call_trees();
|
|
46
|
-
rp_init_measure();
|
|
47
|
-
rp_init_method_info();
|
|
48
|
-
rp_init_profile();
|
|
49
|
-
rp_init_thread();
|
|
50
|
-
}
|
|
1
|
+
/* Copyright (C) 2005-2019 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
|
|
2
|
+
Please see the LICENSE file for copyright and distribution information */
|
|
3
|
+
|
|
4
|
+
/* ruby-prof tracks the time spent executing every method in ruby programming.
|
|
5
|
+
The main players are:
|
|
6
|
+
|
|
7
|
+
profile_t - This represents 1 profile.
|
|
8
|
+
thread_data_t - Stores data about a single thread.
|
|
9
|
+
prof_stack_t - The method call stack in a particular thread
|
|
10
|
+
prof_method_t - Profiling information about each method
|
|
11
|
+
prof_call_tree_t - Keeps track a method's callers and callees.
|
|
12
|
+
|
|
13
|
+
The final result is an instance of a profile object which has a hash table of
|
|
14
|
+
thread_data_t, keyed on the thread id. Each thread in turn has a hash table
|
|
15
|
+
of prof_method_t, keyed on the method id. A hash table is used for quick
|
|
16
|
+
look up when doing a profile. However, it is exposed to Ruby as an array.
|
|
17
|
+
|
|
18
|
+
Each prof_method_t has two hash tables, parent and children, of prof_call_tree_t.
|
|
19
|
+
These objects keep track of a method's callers (who called the method) and its
|
|
20
|
+
callees (who the method called). These are keyed the method id, but once again,
|
|
21
|
+
are exposed to Ruby as arrays. Each prof_call_into_t maintains a pointer to the
|
|
22
|
+
caller or callee method, thereby making it easy to navigate through the call
|
|
23
|
+
hierarchy in ruby - which is very helpful for creating call graphs.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#include "ruby_prof.h"
|
|
27
|
+
|
|
28
|
+
#include "rp_allocation.h"
|
|
29
|
+
#include "rp_measurement.h"
|
|
30
|
+
#include "rp_method.h"
|
|
31
|
+
#include "rp_call_tree.h"
|
|
32
|
+
#include "rp_call_trees.h"
|
|
33
|
+
#include "rp_profile.h"
|
|
34
|
+
#include "rp_stack.h"
|
|
35
|
+
#include "rp_thread.h"
|
|
36
|
+
|
|
37
|
+
VALUE mProf;
|
|
38
|
+
|
|
39
|
+
void Init_ruby_prof(void)
|
|
40
|
+
{
|
|
41
|
+
mProf = rb_define_module("RubyProf");
|
|
42
|
+
|
|
43
|
+
rp_init_allocation();
|
|
44
|
+
rp_init_call_tree();
|
|
45
|
+
rp_init_call_trees();
|
|
46
|
+
rp_init_measure();
|
|
47
|
+
rp_init_method_info();
|
|
48
|
+
rp_init_profile();
|
|
49
|
+
rp_init_thread();
|
|
50
|
+
}
|
data/ext/ruby_prof/ruby_prof.h
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/* Copyright (C) 2005-2019 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
|
|
2
2
|
Please see the LICENSE file for copyright and distribution information */
|
|
3
3
|
|
|
4
|
-
#
|
|
5
|
-
#define __RUBY_PROF_H__
|
|
4
|
+
#pragma once
|
|
6
5
|
|
|
7
|
-
#include <ruby.h>
|
|
8
|
-
#include <ruby/debug.h>
|
|
9
6
|
#include <stdio.h>
|
|
10
7
|
#include <stdbool.h>
|
|
11
8
|
|
|
9
|
+
#include <ruby.h>
|
|
10
|
+
#include <ruby/debug.h>
|
|
11
|
+
|
|
12
12
|
#ifndef rb_st_lookup
|
|
13
13
|
#define rb_st_foreach st_foreach
|
|
14
14
|
#define rb_st_free_table st_free_table
|
|
@@ -30,5 +30,3 @@ typedef enum
|
|
|
30
30
|
OWNER_C = 2
|
|
31
31
|
} prof_owner_t;
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
#endif //__RUBY_PROF_H__
|
|
@@ -29,21 +29,21 @@
|
|
|
29
29
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
30
30
|
<UseDebugLibraries>true</UseDebugLibraries>
|
|
31
31
|
<CharacterSet>Unicode</CharacterSet>
|
|
32
|
-
<PlatformToolset>
|
|
32
|
+
<PlatformToolset>v145</PlatformToolset>
|
|
33
33
|
</PropertyGroup>
|
|
34
34
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
|
35
35
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
36
36
|
<UseDebugLibraries>false</UseDebugLibraries>
|
|
37
37
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
38
38
|
<CharacterSet>Unicode</CharacterSet>
|
|
39
|
-
<PlatformToolset>
|
|
39
|
+
<PlatformToolset>v145</PlatformToolset>
|
|
40
40
|
</PropertyGroup>
|
|
41
41
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
42
|
-
<PlatformToolset>
|
|
42
|
+
<PlatformToolset>v145</PlatformToolset>
|
|
43
43
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
|
44
44
|
</PropertyGroup>
|
|
45
45
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
46
|
-
<PlatformToolset>
|
|
46
|
+
<PlatformToolset>v145</PlatformToolset>
|
|
47
47
|
</PropertyGroup>
|
|
48
48
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
49
49
|
<ImportGroup Label="ExtensionSettings">
|
|
@@ -104,14 +104,14 @@
|
|
|
104
104
|
</ItemDefinitionGroup>
|
|
105
105
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
|
106
106
|
<ClCompile>
|
|
107
|
-
<AdditionalIncludeDirectories>C:\msys64\usr\local\ruby-
|
|
107
|
+
<AdditionalIncludeDirectories>C:\msys64\usr\local\ruby-4.0.1-mswin\include\ruby-4.0.0\x64-mswin64_140;C:\msys64\usr\local\ruby-4.0.1-mswin\include\ruby-4.0.0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
108
108
|
<Optimization>Disabled</Optimization>
|
|
109
109
|
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
110
110
|
<WarningLevel>Level3</WarningLevel>
|
|
111
111
|
</ClCompile>
|
|
112
112
|
<Link>
|
|
113
|
-
<AdditionalLibraryDirectories>C:\msys64\usr\local\ruby-
|
|
114
|
-
<AdditionalDependencies>x64-vcruntime140-
|
|
113
|
+
<AdditionalLibraryDirectories>C:\msys64\usr\local\ruby-4.0.1-mswin\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
114
|
+
<AdditionalDependencies>x64-vcruntime140-ruby400.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
115
115
|
<ModuleDefinitionFile>ruby_prof.def</ModuleDefinitionFile>
|
|
116
116
|
<SubSystem>Console</SubSystem>
|
|
117
117
|
</Link>
|
|
@@ -144,7 +144,6 @@
|
|
|
144
144
|
<ClCompile Include="..\rp_call_trees.c" />
|
|
145
145
|
<ClCompile Include="..\rp_measurement.c" />
|
|
146
146
|
<ClCompile Include="..\rp_measure_allocations.c" />
|
|
147
|
-
<ClCompile Include="..\rp_measure_memory.c" />
|
|
148
147
|
<ClCompile Include="..\rp_measure_process_time.c" />
|
|
149
148
|
<ClCompile Include="..\rp_measure_wall_time.c" />
|
|
150
149
|
<ClCompile Include="..\rp_method.c" />
|