ruby-prof 1.7.2 → 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.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/{CHANGES → CHANGELOG.md} +112 -178
  3. data/README.md +5 -5
  4. data/bin/ruby-prof +1 -4
  5. data/docs/advanced-usage.md +132 -0
  6. data/docs/alternatives.md +98 -0
  7. data/docs/architecture.md +122 -0
  8. data/docs/best-practices.md +27 -0
  9. data/docs/getting-started.md +130 -0
  10. data/docs/history.md +11 -0
  11. data/docs/index.md +45 -0
  12. data/docs/profiling-rails.md +64 -0
  13. data/docs/public/examples/example.rb +33 -0
  14. data/docs/public/examples/generate_reports.rb +92 -0
  15. data/docs/public/examples/reports/call_info.txt +27 -0
  16. data/docs/public/examples/reports/call_stack.html +835 -0
  17. data/docs/public/examples/reports/callgrind.out +150 -0
  18. data/docs/public/examples/reports/flame_graph.html +408 -0
  19. data/docs/public/examples/reports/flat.txt +45 -0
  20. data/docs/public/examples/reports/graph.dot +129 -0
  21. data/docs/public/examples/reports/graph.html +1319 -0
  22. data/docs/public/examples/reports/graph.txt +100 -0
  23. data/docs/public/examples/reports/graphviz_viewer.html +1 -0
  24. data/docs/public/images/call_stack.png +0 -0
  25. data/docs/public/images/class_diagram.png +0 -0
  26. data/docs/public/images/dot_printer.png +0 -0
  27. data/docs/public/images/flame_graph.png +0 -0
  28. data/docs/public/images/flat.png +0 -0
  29. data/docs/public/images/graph.png +0 -0
  30. data/docs/public/images/graph_html.png +0 -0
  31. data/docs/public/images/ruby-prof-logo.svg +1 -0
  32. data/docs/reports.md +150 -0
  33. data/docs/stylesheets/extra.css +80 -0
  34. data/ext/ruby_prof/rp_allocation.c +0 -15
  35. data/ext/ruby_prof/rp_allocation.h +29 -33
  36. data/ext/ruby_prof/rp_call_tree.c +3 -0
  37. data/ext/ruby_prof/rp_call_tree.h +1 -4
  38. data/ext/ruby_prof/rp_call_trees.h +1 -4
  39. data/ext/ruby_prof/rp_measurement.c +0 -5
  40. data/ext/ruby_prof/rp_measurement.h +49 -53
  41. data/ext/ruby_prof/rp_method.c +3 -0
  42. data/ext/ruby_prof/rp_method.h +1 -4
  43. data/ext/ruby_prof/rp_profile.c +1 -1
  44. data/ext/ruby_prof/rp_profile.h +1 -5
  45. data/ext/ruby_prof/rp_stack.h +50 -53
  46. data/ext/ruby_prof/rp_thread.h +1 -4
  47. data/ext/ruby_prof/ruby_prof.h +1 -4
  48. data/ext/ruby_prof/vc/ruby_prof.vcxproj +7 -8
  49. data/lib/ruby-prof/assets/call_stack_printer.html.erb +746 -711
  50. data/lib/ruby-prof/assets/flame_graph_printer.html.erb +412 -0
  51. data/lib/ruby-prof/assets/graph_printer.html.erb +355 -355
  52. data/lib/ruby-prof/call_tree.rb +57 -57
  53. data/lib/ruby-prof/call_tree_visitor.rb +36 -36
  54. data/lib/ruby-prof/measurement.rb +17 -17
  55. data/lib/ruby-prof/printers/abstract_printer.rb +19 -33
  56. data/lib/ruby-prof/printers/call_info_printer.rb +53 -53
  57. data/lib/ruby-prof/printers/call_stack_printer.rb +168 -180
  58. data/lib/ruby-prof/printers/call_tree_printer.rb +132 -145
  59. data/lib/ruby-prof/printers/dot_printer.rb +177 -132
  60. data/lib/ruby-prof/printers/flame_graph_printer.rb +79 -0
  61. data/lib/ruby-prof/printers/flat_printer.rb +52 -52
  62. data/lib/ruby-prof/printers/graph_html_printer.rb +62 -63
  63. data/lib/ruby-prof/printers/graph_printer.rb +112 -113
  64. data/lib/ruby-prof/printers/multi_printer.rb +134 -127
  65. data/lib/ruby-prof/profile.rb +13 -0
  66. data/lib/ruby-prof/rack.rb +114 -105
  67. data/lib/ruby-prof/task.rb +147 -147
  68. data/lib/ruby-prof/thread.rb +20 -20
  69. data/lib/ruby-prof/version.rb +1 -1
  70. data/lib/ruby-prof.rb +50 -52
  71. data/lib/unprof.rb +10 -10
  72. data/ruby-prof.gemspec +5 -5
  73. data/test/abstract_printer_test.rb +25 -27
  74. data/test/alias_test.rb +203 -117
  75. data/test/call_tree_builder.rb +126 -126
  76. data/test/call_tree_visitor_test.rb +27 -27
  77. data/test/call_trees_test.rb +66 -66
  78. data/test/duplicate_names_test.rb +32 -32
  79. data/test/dynamic_method_test.rb +50 -50
  80. data/test/exceptions_test.rb +24 -24
  81. data/test/exclude_threads_test.rb +48 -48
  82. data/test/fiber_test.rb +72 -72
  83. data/test/inverse_call_tree_test.rb +174 -174
  84. data/test/line_number_test.rb +138 -1
  85. data/test/marshal_test.rb +144 -145
  86. data/test/measure_allocations.rb +26 -26
  87. data/test/measure_allocations_test.rb +340 -1
  88. data/test/measure_process_time_test.rb +3098 -3142
  89. data/test/measure_times.rb +56 -56
  90. data/test/measure_wall_time_test.rb +511 -372
  91. data/test/measurement_test.rb +82 -82
  92. data/test/merge_test.rb +48 -48
  93. data/test/multi_printer_test.rb +52 -66
  94. data/test/no_method_class_test.rb +15 -15
  95. data/test/pause_resume_test.rb +171 -171
  96. data/test/prime.rb +54 -54
  97. data/test/prime_script.rb +5 -5
  98. data/test/printer_call_stack_test.rb +28 -27
  99. data/test/printer_call_tree_test.rb +30 -30
  100. data/test/printer_flame_graph_test.rb +82 -0
  101. data/test/printer_flat_test.rb +99 -99
  102. data/test/printer_graph_html_test.rb +62 -59
  103. data/test/printer_graph_test.rb +42 -40
  104. data/test/printers_test.rb +28 -44
  105. data/test/printing_recursive_graph_test.rb +81 -81
  106. data/test/profile_test.rb +101 -101
  107. data/test/rack_test.rb +103 -93
  108. data/test/recursive_test.rb +139 -139
  109. data/test/scheduler.rb +4 -0
  110. data/test/singleton_test.rb +39 -38
  111. data/test/stack_printer_test.rb +61 -61
  112. data/test/start_stop_test.rb +106 -106
  113. data/test/test_helper.rb +4 -0
  114. data/test/thread_test.rb +29 -29
  115. data/test/unique_call_path_test.rb +123 -123
  116. data/test/yarv_test.rb +56 -56
  117. metadata +53 -11
  118. data/ext/ruby_prof/rp_measure_memory.c +0 -46
  119. data/lib/ruby-prof/compatibility.rb +0 -113
  120. data/test/compatibility_test.rb +0 -49
  121. data/test/measure_memory_test.rb +0 -1193
@@ -0,0 +1,129 @@
1
+ digraph "Profile" {
2
+ rankdir=TB;
3
+ bgcolor="#FAFAFA";
4
+ node [fontname="Helvetica" fontsize=11 style="filled,rounded" shape=box fillcolor="#FFFFFF" color="#CCCCCC" penwidth=1.2];
5
+ edge [fontname="Helvetica" fontsize=9 color="#5B7DB1" arrowsize=0.7];
6
+ labelloc=t;
7
+ labeljust=l;
8
+ subgraph "Thread 464" {
9
+ 624 [label="take\n(0%)"];
10
+ 632 [label="-@\n(0%)"];
11
+ 640 [label="each\n(0%)"];
12
+ 640 -> 632 [label="25/25" penwidth=0.5];
13
+ 648 [label="sort_by\n(0%)"];
14
+ 648 -> 640 [label="1/1" penwidth=0.5];
15
+ 656 [label="top_words\n(0%)"];
16
+ 656 -> 648 [label="1/1" penwidth=0.5];
17
+ 656 -> 624 [label="1/1" penwidth=0.5];
18
+ 664 [label="[]=\n(13%)" fillcolor="#2E86C1" fontcolor="#FFFFFF"];
19
+ 672 [label="+\n(9%)" fillcolor="#D4E6F1" fontcolor="#333333"];
20
+ 680 [label="[]\n(11%)" fillcolor="#2E86C1" fontcolor="#FFFFFF"];
21
+ 688 [label="each\n(72%)" fillcolor="#0D2483" fontcolor="#FFFFFF"];
22
+ 688 -> 664 [label="5800/5800" penwidth=1.1];
23
+ 688 -> 680 [label="5800/5800" penwidth=1.1];
24
+ 688 -> 672 [label="5800/5800" penwidth=0.9];
25
+ 696 [label="initialize\n(0%)"];
26
+ 704 [label="count_words\n(72%)" fillcolor="#0D2483" fontcolor="#FFFFFF"];
27
+ 704 -> 688 [label="1/1" penwidth=4.0];
28
+ 704 -> 696 [label="1/1" penwidth=0.5];
29
+ 712 [label="split\n(19%)" fillcolor="#2E86C1" fontcolor="#FFFFFF"];
30
+ 720 [label="tokenize\n(19%)" fillcolor="#2E86C1" fontcolor="#FFFFFF"];
31
+ 720 -> 712 [label="1/1" penwidth=1.5];
32
+ 728 [label="gsub\n(8%)" fillcolor="#D4E6F1" fontcolor="#333333"];
33
+ 736 [label="downcase\n(0%)"];
34
+ 744 [label="normalize\n(8%)" fillcolor="#D4E6F1" fontcolor="#333333"];
35
+ 744 -> 728 [label="1/1" penwidth=0.9];
36
+ 744 -> 736 [label="1/1" penwidth=0.5];
37
+ 752 [label="*\n(0%)"];
38
+ 760 [label="run_example\n(100%)" fillcolor="#0D2483" fontcolor="#FFFFFF"];
39
+ 760 -> 704 [label="1/1" penwidth=4.0];
40
+ 760 -> 720 [label="1/1" penwidth=1.5];
41
+ 760 -> 744 [label="1/1" penwidth=0.9];
42
+ 760 -> 656 [label="1/1" penwidth=0.5];
43
+ 760 -> 752 [label="1/1" penwidth=0.5];
44
+ 768 [label="[global]\n(100%)" fillcolor="#0D2483" fontcolor="#FFFFFF"];
45
+ 768 -> 760 [label="1/1" penwidth=4.0];
46
+ }
47
+ subgraph cluster_776 {
48
+ label = "[global]";
49
+ fontname = "Helvetica";
50
+ fontcolor = "#1A35A6";
51
+ fontsize = 14;
52
+ color = "#1A35A6";
53
+ style = "rounded,dashed";
54
+ penwidth = 1.5;
55
+ 768;
56
+ }
57
+ subgraph cluster_784 {
58
+ label = "Object";
59
+ fontname = "Helvetica";
60
+ fontcolor = "#2E86C1";
61
+ fontsize = 14;
62
+ color = "#2E86C1";
63
+ style = "rounded,dashed";
64
+ penwidth = 1.5;
65
+ 760;
66
+ 744;
67
+ 720;
68
+ 704;
69
+ 656;
70
+ }
71
+ subgraph cluster_792 {
72
+ label = "String";
73
+ fontname = "Helvetica";
74
+ fontcolor = "#1ABC9C";
75
+ fontsize = 14;
76
+ color = "#1ABC9C";
77
+ style = "rounded,dashed";
78
+ penwidth = 1.5;
79
+ 752;
80
+ 736;
81
+ 728;
82
+ 712;
83
+ }
84
+ subgraph cluster_800 {
85
+ label = "Hash";
86
+ fontname = "Helvetica";
87
+ fontcolor = "#5B2C8E";
88
+ fontsize = 14;
89
+ color = "#5B2C8E";
90
+ style = "rounded,dashed";
91
+ penwidth = 1.5;
92
+ 696;
93
+ 680;
94
+ 664;
95
+ 640;
96
+ }
97
+ subgraph cluster_808 {
98
+ label = "Array";
99
+ fontname = "Helvetica";
100
+ fontcolor = "#2471A3";
101
+ fontsize = 14;
102
+ color = "#2471A3";
103
+ style = "rounded,dashed";
104
+ penwidth = 1.5;
105
+ 688;
106
+ 624;
107
+ }
108
+ subgraph cluster_816 {
109
+ label = "Integer";
110
+ fontname = "Helvetica";
111
+ fontcolor = "#148F77";
112
+ fontsize = 14;
113
+ color = "#148F77";
114
+ style = "rounded,dashed";
115
+ penwidth = 1.5;
116
+ 672;
117
+ 632;
118
+ }
119
+ subgraph cluster_824 {
120
+ label = "Enumerable";
121
+ fontname = "Helvetica";
122
+ fontcolor = "#1F618D";
123
+ fontsize = 14;
124
+ color = "#1F618D";
125
+ style = "rounded,dashed";
126
+ penwidth = 1.5;
127
+ 648;
128
+ }
129
+ }