airbnb-ruby-prof 0.0.1
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.
- data/CHANGES +483 -0
- data/LICENSE +25 -0
- data/README.rdoc +426 -0
- data/Rakefile +51 -0
- data/bin/ruby-prof +279 -0
- data/bin/ruby-prof-check-trace +45 -0
- data/examples/flat.txt +50 -0
- data/examples/graph.dot +84 -0
- data/examples/graph.html +823 -0
- data/examples/graph.txt +139 -0
- data/examples/multi.flat.txt +23 -0
- data/examples/multi.graph.html +760 -0
- data/examples/multi.grind.dat +114 -0
- data/examples/multi.stack.html +547 -0
- data/examples/stack.html +547 -0
- data/ext/ruby_prof/extconf.rb +67 -0
- data/ext/ruby_prof/rp_call_info.c +374 -0
- data/ext/ruby_prof/rp_call_info.h +59 -0
- data/ext/ruby_prof/rp_fast_call_tree_printer.c +247 -0
- data/ext/ruby_prof/rp_fast_call_tree_printer.h +10 -0
- data/ext/ruby_prof/rp_measure.c +71 -0
- data/ext/ruby_prof/rp_measure.h +56 -0
- data/ext/ruby_prof/rp_measure_allocations.c +74 -0
- data/ext/ruby_prof/rp_measure_cpu_time.c +134 -0
- data/ext/ruby_prof/rp_measure_gc_runs.c +71 -0
- data/ext/ruby_prof/rp_measure_gc_time.c +58 -0
- data/ext/ruby_prof/rp_measure_memory.c +75 -0
- data/ext/ruby_prof/rp_measure_process_time.c +69 -0
- data/ext/ruby_prof/rp_measure_wall_time.c +43 -0
- data/ext/ruby_prof/rp_method.c +717 -0
- data/ext/ruby_prof/rp_method.h +79 -0
- data/ext/ruby_prof/rp_stack.c +221 -0
- data/ext/ruby_prof/rp_stack.h +81 -0
- data/ext/ruby_prof/rp_thread.c +312 -0
- data/ext/ruby_prof/rp_thread.h +36 -0
- data/ext/ruby_prof/ruby_prof.c +800 -0
- data/ext/ruby_prof/ruby_prof.h +64 -0
- data/ext/ruby_prof/vc/ruby_prof.sln +32 -0
- data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +108 -0
- data/ext/ruby_prof/vc/ruby_prof_19.vcxproj +110 -0
- data/ext/ruby_prof/vc/ruby_prof_20.vcxproj +110 -0
- data/lib/ruby-prof.rb +63 -0
- data/lib/ruby-prof/aggregate_call_info.rb +76 -0
- data/lib/ruby-prof/assets/call_stack_printer.css.html +117 -0
- data/lib/ruby-prof/assets/call_stack_printer.js.html +385 -0
- data/lib/ruby-prof/assets/call_stack_printer.png +0 -0
- data/lib/ruby-prof/assets/flame_graph_printer.lib.css.html +149 -0
- data/lib/ruby-prof/assets/flame_graph_printer.lib.js.html +707 -0
- data/lib/ruby-prof/assets/flame_graph_printer.page.js.html +56 -0
- data/lib/ruby-prof/assets/flame_graph_printer.tmpl.html.erb +39 -0
- data/lib/ruby-prof/call_info.rb +111 -0
- data/lib/ruby-prof/call_info_visitor.rb +40 -0
- data/lib/ruby-prof/compatibility.rb +186 -0
- data/lib/ruby-prof/method_info.rb +109 -0
- data/lib/ruby-prof/printers/abstract_printer.rb +85 -0
- data/lib/ruby-prof/printers/call_info_printer.rb +41 -0
- data/lib/ruby-prof/printers/call_stack_printer.rb +260 -0
- data/lib/ruby-prof/printers/call_tree_printer.rb +130 -0
- data/lib/ruby-prof/printers/dot_printer.rb +132 -0
- data/lib/ruby-prof/printers/fast_call_tree_printer.rb +87 -0
- data/lib/ruby-prof/printers/flame_graph_html_printer.rb +59 -0
- data/lib/ruby-prof/printers/flame_graph_json_printer.rb +157 -0
- data/lib/ruby-prof/printers/flat_printer.rb +70 -0
- data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +64 -0
- data/lib/ruby-prof/printers/graph_html_printer.rb +244 -0
- data/lib/ruby-prof/printers/graph_printer.rb +116 -0
- data/lib/ruby-prof/printers/multi_printer.rb +58 -0
- data/lib/ruby-prof/profile.rb +22 -0
- data/lib/ruby-prof/profile/exclude_common_methods.rb +201 -0
- data/lib/ruby-prof/rack.rb +95 -0
- data/lib/ruby-prof/task.rb +147 -0
- data/lib/ruby-prof/thread.rb +35 -0
- data/lib/ruby-prof/version.rb +4 -0
- data/lib/ruby-prof/walker.rb +95 -0
- data/lib/unprof.rb +10 -0
- data/ruby-prof.gemspec +56 -0
- data/test/aggregate_test.rb +136 -0
- data/test/basic_test.rb +128 -0
- data/test/block_test.rb +74 -0
- data/test/call_info_test.rb +78 -0
- data/test/call_info_visitor_test.rb +31 -0
- data/test/duplicate_names_test.rb +32 -0
- data/test/dynamic_method_test.rb +55 -0
- data/test/enumerable_test.rb +21 -0
- data/test/exceptions_test.rb +16 -0
- data/test/exclude_methods_test.rb +146 -0
- data/test/exclude_threads_test.rb +53 -0
- data/test/fiber_test.rb +79 -0
- data/test/issue137_test.rb +63 -0
- data/test/line_number_test.rb +71 -0
- data/test/measure_allocations_test.rb +26 -0
- data/test/measure_cpu_time_test.rb +213 -0
- data/test/measure_gc_runs_test.rb +32 -0
- data/test/measure_gc_time_test.rb +36 -0
- data/test/measure_memory_test.rb +33 -0
- data/test/measure_process_time_test.rb +63 -0
- data/test/measure_wall_time_test.rb +255 -0
- data/test/module_test.rb +45 -0
- data/test/multi_measure_test.rb +38 -0
- data/test/multi_printer_test.rb +83 -0
- data/test/no_method_class_test.rb +15 -0
- data/test/pause_resume_test.rb +166 -0
- data/test/prime.rb +54 -0
- data/test/printers_test.rb +255 -0
- data/test/printing_recursive_graph_test.rb +127 -0
- data/test/rack_test.rb +93 -0
- data/test/recursive_test.rb +212 -0
- data/test/singleton_test.rb +38 -0
- data/test/stack_printer_test.rb +65 -0
- data/test/stack_test.rb +138 -0
- data/test/start_stop_test.rb +112 -0
- data/test/test_helper.rb +264 -0
- data/test/thread_test.rb +187 -0
- data/test/unique_call_path_test.rb +202 -0
- data/test/yarv_test.rb +55 -0
- metadata +211 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
/* Copyright (C) 2005-2013 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
|
+
#ifndef __RUBY_PROF_H__
|
5
|
+
#define __RUBY_PROF_H__
|
6
|
+
|
7
|
+
#include <ruby.h>
|
8
|
+
#include <stdio.h>
|
9
|
+
|
10
|
+
#if RUBY_PROF_RUBY_VERSION == 10806
|
11
|
+
# error 1.8.6 is not supported. Please upgrade to 1.9.3 or higher.
|
12
|
+
#endif
|
13
|
+
|
14
|
+
#if RUBY_PROF_RUBY_VERSION == 10807
|
15
|
+
# error 1.8.7 is not supported. Please upgrade to 1.9.3 or higher.
|
16
|
+
#endif
|
17
|
+
|
18
|
+
#if RUBY_PROF_RUBY_VERSION == 10900
|
19
|
+
# error 1.9.0 is not supported. Please upgrade to 1.9.3 or higher.
|
20
|
+
#endif
|
21
|
+
|
22
|
+
#if RUBY_PROF_RUBY_VERSION == 10901
|
23
|
+
# error 1.9.1 is not supported. Please upgrade to 1.9.3 or higher.
|
24
|
+
#endif
|
25
|
+
|
26
|
+
#if RUBY_PROF_RUBY_VERSION == 10902
|
27
|
+
# error 1.9.2 is not supported. Please upgrade to 1.9.3 or higher.
|
28
|
+
#endif
|
29
|
+
|
30
|
+
#include "rp_measure.h"
|
31
|
+
#include "rp_method.h"
|
32
|
+
#include "rp_call_info.h"
|
33
|
+
#include "rp_stack.h"
|
34
|
+
#include "rp_thread.h"
|
35
|
+
#include "rp_fast_call_tree_printer.h"
|
36
|
+
|
37
|
+
extern VALUE mProf;
|
38
|
+
extern VALUE cProfile;
|
39
|
+
|
40
|
+
void method_key(prof_method_key_t* key, VALUE klass, ID mid);
|
41
|
+
|
42
|
+
typedef struct
|
43
|
+
{
|
44
|
+
st_table* threads_tbl;
|
45
|
+
st_table* exclude_threads_tbl;
|
46
|
+
st_table* include_threads_tbl;
|
47
|
+
st_table* exclude_methods_tbl;
|
48
|
+
thread_data_t* last_thread_data;
|
49
|
+
prof_measurements_t* measurements_at_pause_resume;
|
50
|
+
int merge_fibers;
|
51
|
+
|
52
|
+
VALUE main_thread_id;
|
53
|
+
uintptr_t next_thread_index;
|
54
|
+
|
55
|
+
VALUE running;
|
56
|
+
VALUE paused;
|
57
|
+
|
58
|
+
prof_measurer_t* measurer;
|
59
|
+
prof_measurements_t* measurements;
|
60
|
+
VALUE threads;
|
61
|
+
} prof_profile_t;
|
62
|
+
|
63
|
+
|
64
|
+
#endif //__RUBY_PROF_H__
|
@@ -0,0 +1,32 @@
|
|
1
|
+
|
2
|
+
Microsoft Visual Studio Solution File, Format Version 11.00
|
3
|
+
# Visual Studio 2010
|
4
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ruby_prof_18", "ruby_prof_18.vcxproj", "{7789FC23-D053-4733-9ED1-D6CE099E1237}"
|
5
|
+
EndProject
|
6
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ruby_prof_19", "ruby_prof_19.vcxproj", "{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}"
|
7
|
+
EndProject
|
8
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ruby_prof_20", "ruby_prof_20.vcxproj", "{6B4978F4-3B5F-4D38-81A8-069EC28CC069}"
|
9
|
+
EndProject
|
10
|
+
Global
|
11
|
+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
12
|
+
Debug|Win32 = Debug|Win32
|
13
|
+
Release|Win32 = Release|Win32
|
14
|
+
EndGlobalSection
|
15
|
+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
16
|
+
{7789FC23-D053-4733-9ED1-D6CE099E1237}.Debug|Win32.ActiveCfg = Debug|Win32
|
17
|
+
{7789FC23-D053-4733-9ED1-D6CE099E1237}.Debug|Win32.Build.0 = Debug|Win32
|
18
|
+
{7789FC23-D053-4733-9ED1-D6CE099E1237}.Release|Win32.ActiveCfg = Release|Win32
|
19
|
+
{7789FC23-D053-4733-9ED1-D6CE099E1237}.Release|Win32.Build.0 = Release|Win32
|
20
|
+
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Debug|Win32.ActiveCfg = Debug|Win32
|
21
|
+
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Debug|Win32.Build.0 = Debug|Win32
|
22
|
+
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Release|Win32.ActiveCfg = Release|Win32
|
23
|
+
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Release|Win32.Build.0 = Release|Win32
|
24
|
+
{6B4978F4-3B5F-4D38-81A8-069EC28CC069}.Debug|Win32.ActiveCfg = Debug|Win32
|
25
|
+
{6B4978F4-3B5F-4D38-81A8-069EC28CC069}.Debug|Win32.Build.0 = Debug|Win32
|
26
|
+
{6B4978F4-3B5F-4D38-81A8-069EC28CC069}.Release|Win32.ActiveCfg = Release|Win32
|
27
|
+
{6B4978F4-3B5F-4D38-81A8-069EC28CC069}.Release|Win32.Build.0 = Release|Win32
|
28
|
+
EndGlobalSection
|
29
|
+
GlobalSection(SolutionProperties) = preSolution
|
30
|
+
HideSolutionNode = FALSE
|
31
|
+
EndGlobalSection
|
32
|
+
EndGlobal
|
@@ -0,0 +1,108 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
3
|
+
<ItemGroup Label="ProjectConfigurations">
|
4
|
+
<ProjectConfiguration Include="Debug|Win32">
|
5
|
+
<Configuration>Debug</Configuration>
|
6
|
+
<Platform>Win32</Platform>
|
7
|
+
</ProjectConfiguration>
|
8
|
+
<ProjectConfiguration Include="Release|Win32">
|
9
|
+
<Configuration>Release</Configuration>
|
10
|
+
<Platform>Win32</Platform>
|
11
|
+
</ProjectConfiguration>
|
12
|
+
</ItemGroup>
|
13
|
+
<ItemGroup>
|
14
|
+
<ClInclude Include="..\rp_call_info.h" />
|
15
|
+
<ClInclude Include="..\rp_measure.h" />
|
16
|
+
<ClInclude Include="..\rp_method.h" />
|
17
|
+
<ClInclude Include="..\rp_stack.h" />
|
18
|
+
<ClInclude Include="..\rp_thread.h" />
|
19
|
+
<ClInclude Include="..\ruby_prof.h" />
|
20
|
+
<ClInclude Include="..\version.h" />
|
21
|
+
</ItemGroup>
|
22
|
+
<ItemGroup>
|
23
|
+
<ClCompile Include="..\rp_call_info.c" />
|
24
|
+
<ClCompile Include="..\rp_measure.c" />
|
25
|
+
<ClCompile Include="..\rp_measure_allocations.c" />
|
26
|
+
<ClCompile Include="..\rp_measure_cpu_time.c" />
|
27
|
+
<ClCompile Include="..\rp_measure_gc_runs.c" />
|
28
|
+
<ClCompile Include="..\rp_measure_gc_time.c" />
|
29
|
+
<ClCompile Include="..\rp_measure_memory.c" />
|
30
|
+
<ClCompile Include="..\rp_measure_process_time.c" />
|
31
|
+
<ClCompile Include="..\rp_measure_wall_time.c" />
|
32
|
+
<ClCompile Include="..\rp_method.c" />
|
33
|
+
<ClCompile Include="..\rp_stack.c" />
|
34
|
+
<ClCompile Include="..\rp_thread.c" />
|
35
|
+
<ClCompile Include="..\ruby_prof.c" />
|
36
|
+
</ItemGroup>
|
37
|
+
<PropertyGroup Label="Globals">
|
38
|
+
<ProjectGuid>{7789FC23-D053-4733-9ED1-D6CE099E1237}</ProjectGuid>
|
39
|
+
<Keyword>Win32Proj</Keyword>
|
40
|
+
<RootNamespace>ruby_prof_18</RootNamespace>
|
41
|
+
</PropertyGroup>
|
42
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
43
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
44
|
+
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
45
|
+
<UseDebugLibraries>true</UseDebugLibraries>
|
46
|
+
<CharacterSet>Unicode</CharacterSet>
|
47
|
+
</PropertyGroup>
|
48
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
49
|
+
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
50
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
51
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
52
|
+
<CharacterSet>Unicode</CharacterSet>
|
53
|
+
</PropertyGroup>
|
54
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
55
|
+
<ImportGroup Label="ExtensionSettings">
|
56
|
+
</ImportGroup>
|
57
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
58
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
59
|
+
</ImportGroup>
|
60
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
61
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
62
|
+
</ImportGroup>
|
63
|
+
<PropertyGroup Label="UserMacros" />
|
64
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
65
|
+
<LinkIncremental>true</LinkIncremental>
|
66
|
+
<OutDir>C:\MinGW\local\src\ruby-prof\lib\1.8</OutDir>
|
67
|
+
<TargetExt>.so</TargetExt>
|
68
|
+
<TargetName>ruby_prof</TargetName>
|
69
|
+
</PropertyGroup>
|
70
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
71
|
+
<LinkIncremental>false</LinkIncremental>
|
72
|
+
</PropertyGroup>
|
73
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
74
|
+
<ClCompile>
|
75
|
+
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
76
|
+
<WarningLevel>Level3</WarningLevel>
|
77
|
+
<Optimization>Disabled</Optimization>
|
78
|
+
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_18_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
79
|
+
<AdditionalIncludeDirectories>C:\MinGW\local\ruby187vc\lib\ruby\1.8\i386-mswin32_100</AdditionalIncludeDirectories>
|
80
|
+
</ClCompile>
|
81
|
+
<Link>
|
82
|
+
<SubSystem>Windows</SubSystem>
|
83
|
+
<GenerateDebugInformation>true</GenerateDebugInformation>
|
84
|
+
<AdditionalLibraryDirectories>C:\MinGW\local\ruby187vc\lib</AdditionalLibraryDirectories>
|
85
|
+
<AdditionalDependencies>msvcr100-ruby18.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
86
|
+
<ModuleDefinitionFile>ruby_prof.def</ModuleDefinitionFile>
|
87
|
+
</Link>
|
88
|
+
</ItemDefinitionGroup>
|
89
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
90
|
+
<ClCompile>
|
91
|
+
<WarningLevel>Level3</WarningLevel>
|
92
|
+
<PrecompiledHeader>Use</PrecompiledHeader>
|
93
|
+
<Optimization>MaxSpeed</Optimization>
|
94
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
95
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
96
|
+
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RUBY_PROF_18_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
97
|
+
</ClCompile>
|
98
|
+
<Link>
|
99
|
+
<SubSystem>Windows</SubSystem>
|
100
|
+
<GenerateDebugInformation>true</GenerateDebugInformation>
|
101
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
102
|
+
<OptimizeReferences>true</OptimizeReferences>
|
103
|
+
</Link>
|
104
|
+
</ItemDefinitionGroup>
|
105
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
106
|
+
<ImportGroup Label="ExtensionTargets">
|
107
|
+
</ImportGroup>
|
108
|
+
</Project>
|
@@ -0,0 +1,110 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
3
|
+
<ItemGroup Label="ProjectConfigurations">
|
4
|
+
<ProjectConfiguration Include="Debug|Win32">
|
5
|
+
<Configuration>Debug</Configuration>
|
6
|
+
<Platform>Win32</Platform>
|
7
|
+
</ProjectConfiguration>
|
8
|
+
<ProjectConfiguration Include="Release|Win32">
|
9
|
+
<Configuration>Release</Configuration>
|
10
|
+
<Platform>Win32</Platform>
|
11
|
+
</ProjectConfiguration>
|
12
|
+
</ItemGroup>
|
13
|
+
<PropertyGroup Label="Globals">
|
14
|
+
<ProjectGuid>{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}</ProjectGuid>
|
15
|
+
<Keyword>Win32Proj</Keyword>
|
16
|
+
<RootNamespace>ruby_prof</RootNamespace>
|
17
|
+
</PropertyGroup>
|
18
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
19
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
20
|
+
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
21
|
+
<UseDebugLibraries>true</UseDebugLibraries>
|
22
|
+
<CharacterSet>Unicode</CharacterSet>
|
23
|
+
</PropertyGroup>
|
24
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
25
|
+
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
26
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
27
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
28
|
+
<CharacterSet>Unicode</CharacterSet>
|
29
|
+
</PropertyGroup>
|
30
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
31
|
+
<ImportGroup Label="ExtensionSettings">
|
32
|
+
</ImportGroup>
|
33
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
34
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
35
|
+
</ImportGroup>
|
36
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
37
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
38
|
+
</ImportGroup>
|
39
|
+
<PropertyGroup Label="UserMacros" />
|
40
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
41
|
+
<LinkIncremental>true</LinkIncremental>
|
42
|
+
<OutDir>..\..\..\lib\1.9</OutDir>
|
43
|
+
<TargetExt>.so</TargetExt>
|
44
|
+
<TargetName>ruby_prof</TargetName>
|
45
|
+
</PropertyGroup>
|
46
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
47
|
+
<LinkIncremental>false</LinkIncremental>
|
48
|
+
</PropertyGroup>
|
49
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
50
|
+
<ClCompile>
|
51
|
+
<PrecompiledHeader>
|
52
|
+
</PrecompiledHeader>
|
53
|
+
<WarningLevel>Level3</WarningLevel>
|
54
|
+
<Optimization>Disabled</Optimization>
|
55
|
+
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
56
|
+
<AdditionalIncludeDirectories>C:\MinGW\local\ruby193vc\include\ruby-1.9.1;C:\MinGW\local\ruby193vc\include\ruby-1.9.1\i386-mswin32_100;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
57
|
+
</ClCompile>
|
58
|
+
<Link>
|
59
|
+
<SubSystem>Windows</SubSystem>
|
60
|
+
<GenerateDebugInformation>true</GenerateDebugInformation>
|
61
|
+
<AdditionalLibraryDirectories>C:\MinGW\local\ruby193vc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
62
|
+
<AdditionalDependencies>msvcr100-ruby191.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
63
|
+
<ModuleDefinitionFile>ruby_prof.def</ModuleDefinitionFile>
|
64
|
+
</Link>
|
65
|
+
</ItemDefinitionGroup>
|
66
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
67
|
+
<ClCompile>
|
68
|
+
<WarningLevel>Level3</WarningLevel>
|
69
|
+
<PrecompiledHeader>
|
70
|
+
</PrecompiledHeader>
|
71
|
+
<Optimization>MaxSpeed</Optimization>
|
72
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
73
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
74
|
+
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
75
|
+
</ClCompile>
|
76
|
+
<Link>
|
77
|
+
<SubSystem>Windows</SubSystem>
|
78
|
+
<GenerateDebugInformation>true</GenerateDebugInformation>
|
79
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
80
|
+
<OptimizeReferences>true</OptimizeReferences>
|
81
|
+
</Link>
|
82
|
+
</ItemDefinitionGroup>
|
83
|
+
<ItemGroup>
|
84
|
+
<ClInclude Include="..\rp_call_info.h" />
|
85
|
+
<ClInclude Include="..\rp_measure.h" />
|
86
|
+
<ClInclude Include="..\rp_method.h" />
|
87
|
+
<ClInclude Include="..\rp_stack.h" />
|
88
|
+
<ClInclude Include="..\rp_thread.h" />
|
89
|
+
<ClInclude Include="..\ruby_prof.h" />
|
90
|
+
<ClInclude Include="..\version.h" />
|
91
|
+
</ItemGroup>
|
92
|
+
<ItemGroup>
|
93
|
+
<ClCompile Include="..\rp_call_info.c" />
|
94
|
+
<ClCompile Include="..\rp_measure.c" />
|
95
|
+
<ClCompile Include="..\rp_measure_allocations.c" />
|
96
|
+
<ClCompile Include="..\rp_measure_cpu_time.c" />
|
97
|
+
<ClCompile Include="..\rp_measure_gc_runs.c" />
|
98
|
+
<ClCompile Include="..\rp_measure_gc_time.c" />
|
99
|
+
<ClCompile Include="..\rp_measure_memory.c" />
|
100
|
+
<ClCompile Include="..\rp_measure_process_time.c" />
|
101
|
+
<ClCompile Include="..\rp_measure_wall_time.c" />
|
102
|
+
<ClCompile Include="..\rp_method.c" />
|
103
|
+
<ClCompile Include="..\rp_stack.c" />
|
104
|
+
<ClCompile Include="..\rp_thread.c" />
|
105
|
+
<ClCompile Include="..\ruby_prof.c" />
|
106
|
+
</ItemGroup>
|
107
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
108
|
+
<ImportGroup Label="ExtensionTargets">
|
109
|
+
</ImportGroup>
|
110
|
+
</Project>
|
@@ -0,0 +1,110 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
3
|
+
<ItemGroup Label="ProjectConfigurations">
|
4
|
+
<ProjectConfiguration Include="Debug|Win32">
|
5
|
+
<Configuration>Debug</Configuration>
|
6
|
+
<Platform>Win32</Platform>
|
7
|
+
</ProjectConfiguration>
|
8
|
+
<ProjectConfiguration Include="Release|Win32">
|
9
|
+
<Configuration>Release</Configuration>
|
10
|
+
<Platform>Win32</Platform>
|
11
|
+
</ProjectConfiguration>
|
12
|
+
</ItemGroup>
|
13
|
+
<PropertyGroup Label="Globals">
|
14
|
+
<ProjectGuid>{6B4978F4-3B5F-4D38-81A8-069EC28CC069}</ProjectGuid>
|
15
|
+
<Keyword>Win32Proj</Keyword>
|
16
|
+
<RootNamespace>ruby_prof</RootNamespace>
|
17
|
+
</PropertyGroup>
|
18
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
19
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
20
|
+
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
21
|
+
<UseDebugLibraries>true</UseDebugLibraries>
|
22
|
+
<CharacterSet>Unicode</CharacterSet>
|
23
|
+
</PropertyGroup>
|
24
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
25
|
+
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
26
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
27
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
28
|
+
<CharacterSet>Unicode</CharacterSet>
|
29
|
+
</PropertyGroup>
|
30
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
31
|
+
<ImportGroup Label="ExtensionSettings">
|
32
|
+
</ImportGroup>
|
33
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
34
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
35
|
+
</ImportGroup>
|
36
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
37
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
38
|
+
</ImportGroup>
|
39
|
+
<PropertyGroup Label="UserMacros" />
|
40
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
41
|
+
<LinkIncremental>true</LinkIncremental>
|
42
|
+
<OutDir>..\..\..\lib\2.0</OutDir>
|
43
|
+
<TargetExt>.so</TargetExt>
|
44
|
+
<TargetName>ruby_prof</TargetName>
|
45
|
+
</PropertyGroup>
|
46
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
47
|
+
<LinkIncremental>false</LinkIncremental>
|
48
|
+
</PropertyGroup>
|
49
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
50
|
+
<ClCompile>
|
51
|
+
<PrecompiledHeader>
|
52
|
+
</PrecompiledHeader>
|
53
|
+
<WarningLevel>Level3</WarningLevel>
|
54
|
+
<Optimization>Disabled</Optimization>
|
55
|
+
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
56
|
+
<AdditionalIncludeDirectories>C:\MinGW\local\ruby200vc\include\ruby-2.0.0;C:\MinGW\local\ruby200vc\include\ruby-2.0.0\i386-mswin32_100;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
57
|
+
</ClCompile>
|
58
|
+
<Link>
|
59
|
+
<SubSystem>Windows</SubSystem>
|
60
|
+
<GenerateDebugInformation>true</GenerateDebugInformation>
|
61
|
+
<AdditionalLibraryDirectories>C:\MinGW\local\ruby200vc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
62
|
+
<AdditionalDependencies>msvcr100-ruby200.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
63
|
+
<ModuleDefinitionFile>ruby_prof.def</ModuleDefinitionFile>
|
64
|
+
</Link>
|
65
|
+
</ItemDefinitionGroup>
|
66
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
67
|
+
<ClCompile>
|
68
|
+
<WarningLevel>Level3</WarningLevel>
|
69
|
+
<PrecompiledHeader>
|
70
|
+
</PrecompiledHeader>
|
71
|
+
<Optimization>MaxSpeed</Optimization>
|
72
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
73
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
74
|
+
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
75
|
+
</ClCompile>
|
76
|
+
<Link>
|
77
|
+
<SubSystem>Windows</SubSystem>
|
78
|
+
<GenerateDebugInformation>true</GenerateDebugInformation>
|
79
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
80
|
+
<OptimizeReferences>true</OptimizeReferences>
|
81
|
+
</Link>
|
82
|
+
</ItemDefinitionGroup>
|
83
|
+
<ItemGroup>
|
84
|
+
<ClInclude Include="..\rp_call_info.h" />
|
85
|
+
<ClInclude Include="..\rp_measure.h" />
|
86
|
+
<ClInclude Include="..\rp_method.h" />
|
87
|
+
<ClInclude Include="..\rp_stack.h" />
|
88
|
+
<ClInclude Include="..\rp_thread.h" />
|
89
|
+
<ClInclude Include="..\ruby_prof.h" />
|
90
|
+
<ClInclude Include="..\version.h" />
|
91
|
+
</ItemGroup>
|
92
|
+
<ItemGroup>
|
93
|
+
<ClCompile Include="..\rp_call_info.c" />
|
94
|
+
<ClCompile Include="..\rp_measure.c" />
|
95
|
+
<ClCompile Include="..\rp_measure_allocations.c" />
|
96
|
+
<ClCompile Include="..\rp_measure_cpu_time.c" />
|
97
|
+
<ClCompile Include="..\rp_measure_gc_runs.c" />
|
98
|
+
<ClCompile Include="..\rp_measure_gc_time.c" />
|
99
|
+
<ClCompile Include="..\rp_measure_memory.c" />
|
100
|
+
<ClCompile Include="..\rp_measure_process_time.c" />
|
101
|
+
<ClCompile Include="..\rp_measure_wall_time.c" />
|
102
|
+
<ClCompile Include="..\rp_method.c" />
|
103
|
+
<ClCompile Include="..\rp_stack.c" />
|
104
|
+
<ClCompile Include="..\rp_thread.c" />
|
105
|
+
<ClCompile Include="..\ruby_prof.c" />
|
106
|
+
</ItemGroup>
|
107
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
108
|
+
<ImportGroup Label="ExtensionTargets">
|
109
|
+
</ImportGroup>
|
110
|
+
</Project>
|
data/lib/ruby-prof.rb
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Load the C-based binding.
|
4
|
+
begin
|
5
|
+
RUBY_VERSION =~ /(\d+\.\d+\.\d+)/
|
6
|
+
require "#{$1}/ruby_prof.so"
|
7
|
+
rescue LoadError
|
8
|
+
require "ruby_prof.so"
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'ruby-prof/version'
|
12
|
+
require 'ruby-prof/call_info'
|
13
|
+
require 'ruby-prof/compatibility'
|
14
|
+
require 'ruby-prof/method_info'
|
15
|
+
require 'ruby-prof/profile'
|
16
|
+
require 'ruby-prof/rack'
|
17
|
+
require 'ruby-prof/thread'
|
18
|
+
require 'ruby-prof/walker'
|
19
|
+
|
20
|
+
require 'ruby-prof/printers/fast_call_tree_printer'
|
21
|
+
|
22
|
+
module RubyProf
|
23
|
+
autoload :AggregateCallInfo, 'ruby-prof/aggregate_call_info'
|
24
|
+
autoload :CallInfoVisitor, 'ruby-prof/call_info_visitor'
|
25
|
+
|
26
|
+
autoload :AbstractPrinter, 'ruby-prof/printers/abstract_printer'
|
27
|
+
autoload :CallInfoPrinter, 'ruby-prof/printers/call_info_printer'
|
28
|
+
autoload :CallStackPrinter, 'ruby-prof/printers/call_stack_printer'
|
29
|
+
autoload :CallTreePrinter, 'ruby-prof/printers/call_tree_printer'
|
30
|
+
autoload :DotPrinter, 'ruby-prof/printers/dot_printer'
|
31
|
+
autoload :FlatPrinter, 'ruby-prof/printers/flat_printer'
|
32
|
+
autoload :FlatPrinterWithLineNumbers, 'ruby-prof/printers/flat_printer_with_line_numbers'
|
33
|
+
autoload :FlameGraphHtmlPrinter, 'ruby-prof/printers/flame_graph_html_printer'
|
34
|
+
autoload :FlameGraphJsonPrinter, 'ruby-prof/printers/flame_graph_json_printer'
|
35
|
+
autoload :GraphHtmlPrinter, 'ruby-prof/printers/graph_html_printer'
|
36
|
+
autoload :GraphPrinter, 'ruby-prof/printers/graph_printer'
|
37
|
+
autoload :MultiPrinter, 'ruby-prof/printers/multi_printer'
|
38
|
+
|
39
|
+
# Checks if the user specified the clock mode via
|
40
|
+
# the RUBY_PROF_MEASURE_MODE environment variable
|
41
|
+
def self.figure_measure_mode
|
42
|
+
case ENV["RUBY_PROF_MEASURE_MODE"]
|
43
|
+
when "wall", "wall_time"
|
44
|
+
RubyProf.measure_mode = RubyProf::WALL_TIME
|
45
|
+
when "cpu", "cpu_time"
|
46
|
+
RubyProf.measure_mode = RubyProf::CPU_TIME
|
47
|
+
when "allocations"
|
48
|
+
RubyProf.measure_mode = RubyProf::ALLOCATIONS
|
49
|
+
when "memory"
|
50
|
+
RubyProf.measure_mode = RubyProf::MEMORY
|
51
|
+
when "process", "process_time"
|
52
|
+
RubyProf.measure_mode = RubyProf::PROCESS_TIME
|
53
|
+
when "gc_time"
|
54
|
+
RubyProf.measure_mode = RubyProf::GC_TIME
|
55
|
+
when "gc_runs"
|
56
|
+
RubyProf.measure_mode = RubyProf::GC_RUNS
|
57
|
+
else
|
58
|
+
# the default is defined in the measure_mode reader
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
RubyProf::figure_measure_mode
|