fssm 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,54 @@
1
+ require 'yaml'
2
+ class FSSM::State
3
+ def initialize(path)
4
+ @path = path
5
+ @cache = FSSM::Tree::Cache.new
6
+ end
7
+
8
+ def refresh(base=nil, skip_callbacks=false)
9
+ previous, current = recache(base || @path.to_pathname)
10
+
11
+ unless skip_callbacks
12
+ deleted(previous, current)
13
+ created(previous, current)
14
+ modified(previous, current)
15
+ end
16
+ end
17
+
18
+ private
19
+
20
+ def created(previous, current)
21
+ (current.keys - previous.keys).each {|created| @path.create(created)}
22
+ end
23
+
24
+ def deleted(previous, current)
25
+ (previous.keys - current.keys).each {|deleted| @path.delete(deleted)}
26
+ end
27
+
28
+ def modified(previous, current)
29
+ (current.keys & previous.keys).each do |file|
30
+ @path.update(file) if (current[file] <=> previous[file]) != 0
31
+ end
32
+ end
33
+
34
+ def recache(base)
35
+ base = FSSM::Pathname.for(base)
36
+ previous = @cache.files
37
+ snapshot(base)
38
+ current = @cache.files
39
+ [previous, current]
40
+ end
41
+
42
+ def snapshot(base)
43
+ base = FSSM::Pathname.for(base)
44
+ @cache.unset(base)
45
+ @path.glob.each {|glob| add_glob(base, glob)}
46
+ end
47
+
48
+ def add_glob(base, glob)
49
+ FSSM::Pathname.glob(base.join(glob)).each do |fn|
50
+ @cache.set(fn)
51
+ end
52
+ end
53
+
54
+ end
@@ -0,0 +1,22 @@
1
+ module FSSM::Support
2
+ class << self
3
+ def backend
4
+ (mac? && carbon_core?) ? 'FSEvents' : 'Polling'
5
+ end
6
+
7
+ def mac?
8
+ @@mac ||= RUBY_PLATFORM =~ /darwin/i
9
+ end
10
+
11
+ def carbon_core?
12
+ @@carbon_core ||= begin
13
+ require 'osx/foundation'
14
+ OSX.require_framework '/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework'
15
+ true
16
+ rescue LoadError
17
+ false
18
+ end
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,176 @@
1
+ module FSSM::Tree
2
+ module NodeBase
3
+ def initialize
4
+ @children = {}
5
+ end
6
+
7
+ protected
8
+
9
+ def child(segment)
10
+ @children["#{segment}"]
11
+ end
12
+
13
+ def child!(segment)
14
+ (@children["#{segment}"] ||= Node.new)
15
+ end
16
+
17
+ def has_child?(segment)
18
+ @children.has_key?("#{segment}")
19
+ end
20
+
21
+ def remove_child(segment)
22
+ @children.delete("#{segment}")
23
+ end
24
+
25
+ def remove_children
26
+ @children.clear
27
+ end
28
+ end
29
+
30
+ module NodeEnumerable
31
+ include NodeBase
32
+ include Enumerable
33
+
34
+ def each(prefix=nil, &block)
35
+ @children.each do |segment, node|
36
+ cprefix = prefix ?
37
+ FSSM::Pathname.for(prefix).join(segment) :
38
+ FSSM::Pathname.for(segment)
39
+ block.call(cprefix, node)
40
+ node.each(cprefix, &block)
41
+ end
42
+ end
43
+ end
44
+
45
+ module NodeInsertion
46
+ include NodeBase
47
+
48
+ def unset(path)
49
+ key = key_segments(path)
50
+
51
+ if key.empty?
52
+ remove_children
53
+ return nil
54
+ end
55
+
56
+ segment = key.pop
57
+ node = descendant(key)
58
+
59
+ return unless node
60
+
61
+ node.remove_child(segment)
62
+
63
+ nil
64
+ end
65
+
66
+ def set(path)
67
+ node = descendant!(path)
68
+ node.from_path(path).mtime
69
+ end
70
+
71
+ protected
72
+
73
+ def key_segments(key)
74
+ return key if key.is_a?(Array)
75
+ FSSM::Pathname.for(key).segments
76
+ end
77
+
78
+ def descendant(path)
79
+ recurse(path, false)
80
+ end
81
+
82
+ def descendant!(path)
83
+ recurse(path, true)
84
+ end
85
+
86
+ def recurse(key, create=false)
87
+ key = key_segments(key)
88
+ node = self
89
+
90
+ until key.empty?
91
+ segment = key.shift
92
+ node = create ? node.child!(segment) : node.child(segment)
93
+ return nil unless node
94
+ end
95
+
96
+ node
97
+ end
98
+ end
99
+
100
+ module CacheDebug
101
+ def set(path)
102
+ FSSM.dbg("Cache#set(#{path})")
103
+ super
104
+ end
105
+
106
+ def unset(path)
107
+ FSSM.dbg("Cache#unset(#{path})")
108
+ super
109
+ end
110
+
111
+ def ftype(ft)
112
+ FSSM.dbg("Cache#ftype(#{ft})")
113
+ super
114
+ end
115
+ end
116
+
117
+ class Node
118
+ include NodeBase
119
+ include NodeEnumerable
120
+
121
+ attr_accessor :mtime
122
+ attr_accessor :ftype
123
+
124
+ def <=>(other)
125
+ return unless other.is_a?(::FSSM::Tree::Node)
126
+ self.mtime <=> other.mtime
127
+ end
128
+
129
+ def from_path(path)
130
+ path = FSSM::Pathname.for(path)
131
+ @ftype = path.ftype
132
+ # this handles bad symlinks without failing. why handle bad symlinks at
133
+ # all? well, we could still be interested in their creation and deletion.
134
+ @mtime = path.symlink? ? Time.at(0) : path.mtime
135
+ self
136
+ end
137
+ end
138
+
139
+ class Cache
140
+ include NodeBase
141
+ include NodeEnumerable
142
+ include NodeInsertion
143
+ include CacheDebug if $DEBUG
144
+
145
+ def set(path)
146
+ # all paths set from this level need to be absolute
147
+ # realpath will fail on broken links
148
+ path = FSSM::Pathname.for(path).expand_path
149
+ super(path)
150
+ end
151
+
152
+ def files
153
+ ftype('file')
154
+ end
155
+
156
+ def directories
157
+ ftype('directory')
158
+ end
159
+
160
+ def links
161
+ ftype('link')
162
+ end
163
+ alias symlinks links
164
+
165
+ private
166
+
167
+ def ftype(ft)
168
+ inject({}) do |hash, entry|
169
+ path, node = entry
170
+ hash["#{path}"] = node.mtime if node.ftype == ft
171
+ hash
172
+ end
173
+ end
174
+ end
175
+
176
+ end
@@ -0,0 +1,40 @@
1
+ $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+
3
+ require 'fssm'
4
+
5
+ require 'rubygems'
6
+ require 'ruby-prof'
7
+
8
+ $test_path = FSSM::Pathname.new('..').expand_path
9
+ $test_files = FSSM::Pathname.glob(File.join($test_path, '**', '*'))
10
+
11
+ RubyProf.start
12
+ RubyProf.pause
13
+
14
+ cache = FSSM::Tree::Cache.new
15
+
16
+ 5000.times do |num|
17
+ iteration = "%-5d" % (num + 1)
18
+ print "iteration #{iteration}"
19
+
20
+ print '!'
21
+ RubyProf.resume
22
+ cache.unset($test_path)
23
+ RubyProf.pause
24
+ print '!'
25
+
26
+ $test_files.each do |fn|
27
+ print '.'
28
+ RubyProf.resume
29
+ cache.set(fn)
30
+ RubyProf.pause
31
+ end
32
+
33
+ print "\n\n"
34
+ end
35
+
36
+ result = RubyProf.stop
37
+ output = File.new('prof.html', 'w+')
38
+
39
+ printer = RubyProf::GraphHtmlPrinter.new(result)
40
+ printer.print(output, :min_percent => 1)
@@ -0,0 +1,1119 @@
1
+
2
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
3
+ <html>
4
+ <head>
5
+ <style media="all" type="text/css">
6
+ table {
7
+ border-collapse: collapse;
8
+ border: 1px solid #CCC;
9
+ font-family: Verdana, Arial, Helvetica, sans-serif;
10
+ font-size: 9pt;
11
+ line-height: normal;
12
+ }
13
+
14
+ th {
15
+ text-align: center;
16
+ border-top: 1px solid #FB7A31;
17
+ border-bottom: 1px solid #FB7A31;
18
+ background: #FFC;
19
+ padding: 0.3em;
20
+ border-left: 1px solid silver;
21
+ }
22
+
23
+ tr.break td {
24
+ border: 0;
25
+ border-top: 1px solid #FB7A31;
26
+ padding: 0;
27
+ margin: 0;
28
+ }
29
+
30
+ tr.method td {
31
+ font-weight: bold;
32
+ }
33
+
34
+ td {
35
+ padding: 0.3em;
36
+ }
37
+
38
+ td:first-child {
39
+ width: 190px;
40
+ }
41
+
42
+ td {
43
+ border-left: 1px solid #CCC;
44
+ text-align: center;
45
+ }
46
+
47
+ .method_name {
48
+ text-align: left;
49
+ max-width: 25em;
50
+ }
51
+ </style>
52
+ </head>
53
+ <body>
54
+ <h1>Profile Report</h1>
55
+ <!-- Threads Table -->
56
+ <table>
57
+ <tr>
58
+ <th>Thread ID</th>
59
+ <th>Total Time</th>
60
+ </tr>
61
+
62
+ <tr>
63
+ <td><a href="#3696392">3696392</a></td>
64
+ <td>14.408241</td>
65
+ </tr>
66
+
67
+ </table>
68
+
69
+ <!-- Methods Tables -->
70
+
71
+ <h2><a name="3696392">Thread 3696392</a></h2>
72
+
73
+ <table>
74
+ <tr>
75
+ <th> %Total</th>
76
+ <th> %Self</th>
77
+ <th> Total</th>
78
+ <th> Self</th>
79
+ <th> Wait</th>
80
+ <th> Child</th>
81
+ <th> Calls</th>
82
+ <th class="method_name">Name</th>
83
+ <th>Line</th>
84
+ </tr>
85
+
86
+
87
+
88
+ <!-- Parents -->
89
+
90
+
91
+ <tr class="method">
92
+ <td> 100.00%</td>
93
+ <td> 0.00%</td>
94
+ <td> 14.41</td>
95
+ <td> 0.00</td>
96
+ <td> 0.00</td>
97
+ <td> 14.41</td>
98
+ <td> 0</td>
99
+ <td class="method_name"><a name="Global_[No method]_3696392">Global#[No method]</a></td>
100
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/prof-pathname.rb#line=28" title="/Users/ttilley/tmp/fssm/profile/prof-pathname.rb:28">28</a></td>
101
+ </tr>
102
+
103
+ <!-- Children -->
104
+
105
+
106
+ <tr>
107
+ <td>&nbsp;</td>
108
+ <td>&nbsp;</td>
109
+ <td> 3.06</td>
110
+ <td> 0.56</td>
111
+ <td> 0.00</td>
112
+ <td> 2.50</td>
113
+
114
+ <td> 90000/90000</td>
115
+ <td class="method_name"><a href="#Class_new_3696392">Class#new</a></td>
116
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/prof-pathname.rb#line=35" title="/Users/ttilley/tmp/fssm/profile/prof-pathname.rb:35">35</a></td>
117
+ </tr>
118
+
119
+
120
+ <tr>
121
+ <td>&nbsp;</td>
122
+ <td>&nbsp;</td>
123
+ <td> 11.35</td>
124
+ <td> 1.98</td>
125
+ <td> 0.00</td>
126
+ <td> 9.37</td>
127
+
128
+ <td> 90000/90000</td>
129
+ <td class="method_name"><a href="#FSSM__Pathname_to_a_3696392">FSSM::Pathname#to_a</a></td>
130
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/prof-pathname.rb#line=36" title="/Users/ttilley/tmp/fssm/profile/prof-pathname.rb:36">36</a></td>
131
+ </tr>
132
+
133
+ <!-- Create divider row -->
134
+ <tr class="break"><td colspan="9"></td></tr>
135
+
136
+
137
+ <!-- Parents -->
138
+
139
+
140
+ <tr>
141
+ <td>&nbsp;</td>
142
+ <td>&nbsp;</td>
143
+ <td> 11.35</td>
144
+ <td> 1.98</td>
145
+ <td> 0.00</td>
146
+ <td> 9.37</td>
147
+
148
+ <td> 90000/90000</td>
149
+ <td class="method_name"><a href="#Global_[No method]_3696392">Global#[No method]</a></td>
150
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/prof-pathname.rb#line=36" title="/Users/ttilley/tmp/fssm/profile/prof-pathname.rb:36">36</a></td>
151
+ </tr>
152
+
153
+
154
+ <tr class="method">
155
+ <td> 78.76%</td>
156
+ <td> 13.76%</td>
157
+ <td> 11.35</td>
158
+ <td> 1.98</td>
159
+ <td> 0.00</td>
160
+ <td> 9.37</td>
161
+ <td> 90000</td>
162
+ <td class="method_name"><a name="FSSM__Pathname_to_a_3696392">FSSM::Pathname#to_a</a></td>
163
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=47" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:47">47</a></td>
164
+ </tr>
165
+
166
+ <!-- Children -->
167
+
168
+
169
+ <tr>
170
+ <td>&nbsp;</td>
171
+ <td>&nbsp;</td>
172
+ <td> 6.60</td>
173
+ <td> 2.97</td>
174
+ <td> 0.00</td>
175
+ <td> 3.63</td>
176
+
177
+ <td> 90000/90000</td>
178
+ <td class="method_name"><a href="#FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
179
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=49" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:49">49</a></td>
180
+ </tr>
181
+
182
+
183
+ <tr>
184
+ <td>&nbsp;</td>
185
+ <td>&nbsp;</td>
186
+ <td> 0.94</td>
187
+ <td> 0.49</td>
188
+ <td> 0.00</td>
189
+ <td> 0.45</td>
190
+
191
+ <td> 90000/90000</td>
192
+ <td class="method_name"><a href="#Kernel_dup_3696392">Kernel#dup</a></td>
193
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=50" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:50">50</a></td>
194
+ </tr>
195
+
196
+
197
+ <tr>
198
+ <td>&nbsp;</td>
199
+ <td>&nbsp;</td>
200
+ <td> 1.40</td>
201
+ <td> 0.78</td>
202
+ <td> 0.00</td>
203
+ <td> 0.62</td>
204
+
205
+ <td> 90000/180000</td>
206
+ <td class="method_name"><a href="#Array_delete_3696392">Array#delete</a></td>
207
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=51" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:51">51</a></td>
208
+ </tr>
209
+
210
+
211
+ <tr>
212
+ <td>&nbsp;</td>
213
+ <td>&nbsp;</td>
214
+ <td> 0.16</td>
215
+ <td> 0.16</td>
216
+ <td> 0.00</td>
217
+ <td> 0.00</td>
218
+
219
+ <td> 90000/90000</td>
220
+ <td class="method_name"><a href="#String_empty__3696392">String#empty?</a></td>
221
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=52" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:52">52</a></td>
222
+ </tr>
223
+
224
+
225
+ <tr>
226
+ <td>&nbsp;</td>
227
+ <td>&nbsp;</td>
228
+ <td> 0.26</td>
229
+ <td> 0.26</td>
230
+ <td> 0.00</td>
231
+ <td> 0.00</td>
232
+
233
+ <td> 90000/90000</td>
234
+ <td class="method_name"><a href="#Array_unshift_3696392">Array#unshift</a></td>
235
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=52" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:52">52</a></td>
236
+ </tr>
237
+
238
+ <!-- Create divider row -->
239
+ <tr class="break"><td colspan="9"></td></tr>
240
+
241
+
242
+ <!-- Parents -->
243
+
244
+
245
+ <tr>
246
+ <td>&nbsp;</td>
247
+ <td>&nbsp;</td>
248
+ <td> 6.60</td>
249
+ <td> 2.97</td>
250
+ <td> 0.00</td>
251
+ <td> 3.63</td>
252
+
253
+ <td> 90000/90000</td>
254
+ <td class="method_name"><a href="#FSSM__Pathname_to_a_3696392">FSSM::Pathname#to_a</a></td>
255
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=49" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:49">49</a></td>
256
+ </tr>
257
+
258
+
259
+ <tr class="method">
260
+ <td> 45.80%</td>
261
+ <td> 20.58%</td>
262
+ <td> 6.60</td>
263
+ <td> 2.97</td>
264
+ <td> 0.00</td>
265
+ <td> 3.63</td>
266
+ <td> 90000</td>
267
+ <td class="method_name"><a name="FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
268
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=212" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:212">212</a></td>
269
+ </tr>
270
+
271
+ <!-- Children -->
272
+
273
+
274
+ <tr>
275
+ <td>&nbsp;</td>
276
+ <td>&nbsp;</td>
277
+ <td> 0.46</td>
278
+ <td> 0.46</td>
279
+ <td> 0.00</td>
280
+ <td> 0.00</td>
281
+
282
+ <td> 90000/90000</td>
283
+ <td class="method_name"><a href="#Regexp_match_3696392">Regexp#match</a></td>
284
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=217" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:217">217</a></td>
285
+ </tr>
286
+
287
+
288
+ <tr>
289
+ <td>&nbsp;</td>
290
+ <td>&nbsp;</td>
291
+ <td> 0.23</td>
292
+ <td> 0.23</td>
293
+ <td> 0.00</td>
294
+ <td> 0.00</td>
295
+
296
+ <td> 90000/90000</td>
297
+ <td class="method_name"><a href="#MatchData_[]_3696392">MatchData#[]</a></td>
298
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=218" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:218">218</a></td>
299
+ </tr>
300
+
301
+
302
+ <tr>
303
+ <td>&nbsp;</td>
304
+ <td>&nbsp;</td>
305
+ <td> 0.40</td>
306
+ <td> 0.40</td>
307
+ <td> 0.00</td>
308
+ <td> 0.00</td>
309
+
310
+ <td> 90000/90000</td>
311
+ <td class="method_name"><a href="#FSSM__Pathname_to_s_3696392">FSSM::Pathname#to_s</a></td>
312
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=218" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:218">218</a></td>
313
+ </tr>
314
+
315
+
316
+ <tr>
317
+ <td>&nbsp;</td>
318
+ <td>&nbsp;</td>
319
+ <td> 0.21</td>
320
+ <td> 0.21</td>
321
+ <td> 0.00</td>
322
+ <td> 0.00</td>
323
+
324
+ <td> 90000/90000</td>
325
+ <td class="method_name"><a href="#MatchData_post_match_3696392">MatchData#post_match</a></td>
326
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=219" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:219">219</a></td>
327
+ </tr>
328
+
329
+
330
+ <tr>
331
+ <td>&nbsp;</td>
332
+ <td>&nbsp;</td>
333
+ <td> 0.72</td>
334
+ <td> 0.72</td>
335
+ <td> 0.00</td>
336
+ <td> 0.00</td>
337
+
338
+ <td> 90000/90000</td>
339
+ <td class="method_name"><a href="#String_split_3696392">String#split</a></td>
340
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=219" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:219">219</a></td>
341
+ </tr>
342
+
343
+
344
+ <tr>
345
+ <td>&nbsp;</td>
346
+ <td>&nbsp;</td>
347
+ <td> 0.17</td>
348
+ <td> 0.17</td>
349
+ <td> 0.00</td>
350
+ <td> 0.00</td>
351
+
352
+ <td> 90000/90000</td>
353
+ <td class="method_name"><a href="#Array_compact!_3696392">Array#compact!</a></td>
354
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=225" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:225">225</a></td>
355
+ </tr>
356
+
357
+
358
+ <tr>
359
+ <td>&nbsp;</td>
360
+ <td>&nbsp;</td>
361
+ <td> 1.44</td>
362
+ <td> 0.80</td>
363
+ <td> 0.00</td>
364
+ <td> 0.64</td>
365
+
366
+ <td> 90000/180000</td>
367
+ <td class="method_name"><a href="#Array_delete_3696392">Array#delete</a></td>
368
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=226" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:226">226</a></td>
369
+ </tr>
370
+
371
+ <!-- Create divider row -->
372
+ <tr class="break"><td colspan="9"></td></tr>
373
+
374
+
375
+ <!-- Parents -->
376
+
377
+
378
+ <tr>
379
+ <td>&nbsp;</td>
380
+ <td>&nbsp;</td>
381
+ <td> 3.06</td>
382
+ <td> 0.56</td>
383
+ <td> 0.00</td>
384
+ <td> 2.50</td>
385
+
386
+ <td> 90000/90000</td>
387
+ <td class="method_name"><a href="#Global_[No method]_3696392">Global#[No method]</a></td>
388
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/prof-pathname.rb#line=35" title="/Users/ttilley/tmp/fssm/profile/prof-pathname.rb:35">35</a></td>
389
+ </tr>
390
+
391
+
392
+ <tr class="method">
393
+ <td> 21.24%</td>
394
+ <td> 3.92%</td>
395
+ <td> 3.06</td>
396
+ <td> 0.56</td>
397
+ <td> 0.00</td>
398
+ <td> 2.50</td>
399
+ <td> 90000</td>
400
+ <td class="method_name"><a name="Class_new_3696392">Class#new</a></td>
401
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
402
+ </tr>
403
+
404
+ <!-- Children -->
405
+
406
+
407
+ <tr>
408
+ <td>&nbsp;</td>
409
+ <td>&nbsp;</td>
410
+ <td> 0.18</td>
411
+ <td> 0.18</td>
412
+ <td> 0.00</td>
413
+ <td> 0.00</td>
414
+
415
+ <td> 90000/90000</td>
416
+ <td class="method_name"><a href="#_Class__String__allocate_3696392">&lt;Class::String&gt;#allocate</a></td>
417
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=35" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:35">35</a></td>
418
+ </tr>
419
+
420
+
421
+ <tr>
422
+ <td>&nbsp;</td>
423
+ <td>&nbsp;</td>
424
+ <td> 2.31</td>
425
+ <td> 1.18</td>
426
+ <td> 0.00</td>
427
+ <td> 1.13</td>
428
+
429
+ <td> 90000/90000</td>
430
+ <td class="method_name"><a href="#FSSM__Pathname_initialize_3696392">FSSM::Pathname#initialize</a></td>
431
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=35" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:35">35</a></td>
432
+ </tr>
433
+
434
+ <!-- Create divider row -->
435
+ <tr class="break"><td colspan="9"></td></tr>
436
+
437
+
438
+ <!-- Parents -->
439
+
440
+
441
+ <tr>
442
+ <td>&nbsp;</td>
443
+ <td>&nbsp;</td>
444
+ <td> 1.44</td>
445
+ <td> 0.80</td>
446
+ <td> 0.00</td>
447
+ <td> 0.64</td>
448
+
449
+ <td> 90000/180000</td>
450
+ <td class="method_name"><a href="#FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
451
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=226" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:226">226</a></td>
452
+ </tr>
453
+
454
+
455
+ <tr>
456
+ <td>&nbsp;</td>
457
+ <td>&nbsp;</td>
458
+ <td> 1.40</td>
459
+ <td> 0.78</td>
460
+ <td> 0.00</td>
461
+ <td> 0.62</td>
462
+
463
+ <td> 90000/180000</td>
464
+ <td class="method_name"><a href="#FSSM__Pathname_to_a_3696392">FSSM::Pathname#to_a</a></td>
465
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=51" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:51">51</a></td>
466
+ </tr>
467
+
468
+
469
+ <tr class="method">
470
+ <td> 19.77%</td>
471
+ <td> 11.03%</td>
472
+ <td> 2.85</td>
473
+ <td> 1.59</td>
474
+ <td> 0.00</td>
475
+ <td> 1.26</td>
476
+ <td> 180000</td>
477
+ <td class="method_name"><a name="Array_delete_3696392">Array#delete</a></td>
478
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
479
+ </tr>
480
+
481
+ <!-- Children -->
482
+
483
+
484
+ <tr>
485
+ <td>&nbsp;</td>
486
+ <td>&nbsp;</td>
487
+ <td> 1.26</td>
488
+ <td> 1.26</td>
489
+ <td> 0.00</td>
490
+ <td> 0.00</td>
491
+
492
+ <td> 720000/720000</td>
493
+ <td class="method_name"><a href="#String____3696392">String#==</a></td>
494
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=51" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:51">51</a></td>
495
+ </tr>
496
+
497
+ <!-- Create divider row -->
498
+ <tr class="break"><td colspan="9"></td></tr>
499
+
500
+
501
+ <!-- Parents -->
502
+
503
+
504
+ <tr>
505
+ <td>&nbsp;</td>
506
+ <td>&nbsp;</td>
507
+ <td> 2.31</td>
508
+ <td> 1.18</td>
509
+ <td> 0.00</td>
510
+ <td> 1.13</td>
511
+
512
+ <td> 90000/90000</td>
513
+ <td class="method_name"><a href="#Class_new_3696392">Class#new</a></td>
514
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=35" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:35">35</a></td>
515
+ </tr>
516
+
517
+
518
+ <tr class="method">
519
+ <td> 16.06%</td>
520
+ <td> 8.21%</td>
521
+ <td> 2.31</td>
522
+ <td> 1.18</td>
523
+ <td> 0.00</td>
524
+ <td> 1.13</td>
525
+ <td> 90000</td>
526
+ <td class="method_name"><a name="FSSM__Pathname_initialize_3696392">FSSM::Pathname#initialize</a></td>
527
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=28" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:28">28</a></td>
528
+ </tr>
529
+
530
+ <!-- Children -->
531
+
532
+
533
+ <tr>
534
+ <td>&nbsp;</td>
535
+ <td>&nbsp;</td>
536
+ <td> 0.94</td>
537
+ <td> 0.94</td>
538
+ <td> 0.00</td>
539
+ <td> 0.00</td>
540
+
541
+ <td> 90000/90000</td>
542
+ <td class="method_name"><a href="#FSSM__Pathname_dememo_3696392">FSSM::Pathname#dememo</a></td>
543
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=33" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:33">33</a></td>
544
+ </tr>
545
+
546
+
547
+ <tr>
548
+ <td>&nbsp;</td>
549
+ <td>&nbsp;</td>
550
+ <td> 0.19</td>
551
+ <td> 0.19</td>
552
+ <td> 0.00</td>
553
+ <td> 0.00</td>
554
+
555
+ <td> 90000/90000</td>
556
+ <td class="method_name"><a href="#String_initialize_3696392">String#initialize</a></td>
557
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=35" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:35">35</a></td>
558
+ </tr>
559
+
560
+ <!-- Create divider row -->
561
+ <tr class="break"><td colspan="9"></td></tr>
562
+
563
+
564
+ <!-- Parents -->
565
+
566
+
567
+ <tr>
568
+ <td>&nbsp;</td>
569
+ <td>&nbsp;</td>
570
+ <td> 1.26</td>
571
+ <td> 1.26</td>
572
+ <td> 0.00</td>
573
+ <td> 0.00</td>
574
+
575
+ <td> 720000/720000</td>
576
+ <td class="method_name"><a href="#Array_delete_3696392">Array#delete</a></td>
577
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=51" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:51">51</a></td>
578
+ </tr>
579
+
580
+
581
+ <tr class="method">
582
+ <td> 8.74%</td>
583
+ <td> 8.74%</td>
584
+ <td> 1.26</td>
585
+ <td> 1.26</td>
586
+ <td> 0.00</td>
587
+ <td> 0.00</td>
588
+ <td> 720000</td>
589
+ <td class="method_name"><a name="String____3696392">String#==</a></td>
590
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
591
+ </tr>
592
+
593
+ <!-- Children -->
594
+
595
+ <!-- Create divider row -->
596
+ <tr class="break"><td colspan="9"></td></tr>
597
+
598
+
599
+ <!-- Parents -->
600
+
601
+
602
+ <tr>
603
+ <td>&nbsp;</td>
604
+ <td>&nbsp;</td>
605
+ <td> 0.94</td>
606
+ <td> 0.49</td>
607
+ <td> 0.00</td>
608
+ <td> 0.45</td>
609
+
610
+ <td> 90000/90000</td>
611
+ <td class="method_name"><a href="#FSSM__Pathname_to_a_3696392">FSSM::Pathname#to_a</a></td>
612
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=50" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:50">50</a></td>
613
+ </tr>
614
+
615
+
616
+ <tr class="method">
617
+ <td> 6.55%</td>
618
+ <td> 3.43%</td>
619
+ <td> 0.94</td>
620
+ <td> 0.49</td>
621
+ <td> 0.00</td>
622
+ <td> 0.45</td>
623
+ <td> 90000</td>
624
+ <td class="method_name"><a name="Kernel_dup_3696392">Kernel#dup</a></td>
625
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
626
+ </tr>
627
+
628
+ <!-- Children -->
629
+
630
+
631
+ <tr>
632
+ <td>&nbsp;</td>
633
+ <td>&nbsp;</td>
634
+ <td> 0.20</td>
635
+ <td> 0.20</td>
636
+ <td> 0.00</td>
637
+ <td> 0.00</td>
638
+
639
+ <td> 90000/90000</td>
640
+ <td class="method_name"><a href="#_Class__Array__allocate_3696392">&lt;Class::Array&gt;#allocate</a></td>
641
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=50" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:50">50</a></td>
642
+ </tr>
643
+
644
+
645
+ <tr>
646
+ <td>&nbsp;</td>
647
+ <td>&nbsp;</td>
648
+ <td> 0.25</td>
649
+ <td> 0.25</td>
650
+ <td> 0.00</td>
651
+ <td> 0.00</td>
652
+
653
+ <td> 90000/90000</td>
654
+ <td class="method_name"><a href="#Array_initialize_copy_3696392">Array#initialize_copy</a></td>
655
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=50" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:50">50</a></td>
656
+ </tr>
657
+
658
+ <!-- Create divider row -->
659
+ <tr class="break"><td colspan="9"></td></tr>
660
+
661
+
662
+ <!-- Parents -->
663
+
664
+
665
+ <tr>
666
+ <td>&nbsp;</td>
667
+ <td>&nbsp;</td>
668
+ <td> 0.94</td>
669
+ <td> 0.94</td>
670
+ <td> 0.00</td>
671
+ <td> 0.00</td>
672
+
673
+ <td> 90000/90000</td>
674
+ <td class="method_name"><a href="#FSSM__Pathname_initialize_3696392">FSSM::Pathname#initialize</a></td>
675
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=33" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:33">33</a></td>
676
+ </tr>
677
+
678
+
679
+ <tr class="method">
680
+ <td> 6.50%</td>
681
+ <td> 6.50%</td>
682
+ <td> 0.94</td>
683
+ <td> 0.94</td>
684
+ <td> 0.00</td>
685
+ <td> 0.00</td>
686
+ <td> 90000</td>
687
+ <td class="method_name"><a name="FSSM__Pathname_dememo_3696392">FSSM::Pathname#dememo</a></td>
688
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=203" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:203">203</a></td>
689
+ </tr>
690
+
691
+ <!-- Children -->
692
+
693
+ <!-- Create divider row -->
694
+ <tr class="break"><td colspan="9"></td></tr>
695
+
696
+
697
+ <!-- Parents -->
698
+
699
+
700
+ <tr>
701
+ <td>&nbsp;</td>
702
+ <td>&nbsp;</td>
703
+ <td> 0.72</td>
704
+ <td> 0.72</td>
705
+ <td> 0.00</td>
706
+ <td> 0.00</td>
707
+
708
+ <td> 90000/90000</td>
709
+ <td class="method_name"><a href="#FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
710
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=219" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:219">219</a></td>
711
+ </tr>
712
+
713
+
714
+ <tr class="method">
715
+ <td> 4.97%</td>
716
+ <td> 4.97%</td>
717
+ <td> 0.72</td>
718
+ <td> 0.72</td>
719
+ <td> 0.00</td>
720
+ <td> 0.00</td>
721
+ <td> 90000</td>
722
+ <td class="method_name"><a name="String_split_3696392">String#split</a></td>
723
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
724
+ </tr>
725
+
726
+ <!-- Children -->
727
+
728
+ <!-- Create divider row -->
729
+ <tr class="break"><td colspan="9"></td></tr>
730
+
731
+
732
+ <!-- Parents -->
733
+
734
+
735
+ <tr>
736
+ <td>&nbsp;</td>
737
+ <td>&nbsp;</td>
738
+ <td> 0.46</td>
739
+ <td> 0.46</td>
740
+ <td> 0.00</td>
741
+ <td> 0.00</td>
742
+
743
+ <td> 90000/90000</td>
744
+ <td class="method_name"><a href="#FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
745
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=217" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:217">217</a></td>
746
+ </tr>
747
+
748
+
749
+ <tr class="method">
750
+ <td> 3.21%</td>
751
+ <td> 3.21%</td>
752
+ <td> 0.46</td>
753
+ <td> 0.46</td>
754
+ <td> 0.00</td>
755
+ <td> 0.00</td>
756
+ <td> 90000</td>
757
+ <td class="method_name"><a name="Regexp_match_3696392">Regexp#match</a></td>
758
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
759
+ </tr>
760
+
761
+ <!-- Children -->
762
+
763
+ <!-- Create divider row -->
764
+ <tr class="break"><td colspan="9"></td></tr>
765
+
766
+
767
+ <!-- Parents -->
768
+
769
+
770
+ <tr>
771
+ <td>&nbsp;</td>
772
+ <td>&nbsp;</td>
773
+ <td> 0.40</td>
774
+ <td> 0.40</td>
775
+ <td> 0.00</td>
776
+ <td> 0.00</td>
777
+
778
+ <td> 90000/90000</td>
779
+ <td class="method_name"><a href="#FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
780
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=218" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:218">218</a></td>
781
+ </tr>
782
+
783
+
784
+ <tr class="method">
785
+ <td> 2.77%</td>
786
+ <td> 2.77%</td>
787
+ <td> 0.40</td>
788
+ <td> 0.40</td>
789
+ <td> 0.00</td>
790
+ <td> 0.00</td>
791
+ <td> 90000</td>
792
+ <td class="method_name"><a name="FSSM__Pathname_to_s_3696392">FSSM::Pathname#to_s</a></td>
793
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=42" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:42">42</a></td>
794
+ </tr>
795
+
796
+ <!-- Children -->
797
+
798
+ <!-- Create divider row -->
799
+ <tr class="break"><td colspan="9"></td></tr>
800
+
801
+
802
+ <!-- Parents -->
803
+
804
+
805
+ <tr>
806
+ <td>&nbsp;</td>
807
+ <td>&nbsp;</td>
808
+ <td> 0.26</td>
809
+ <td> 0.26</td>
810
+ <td> 0.00</td>
811
+ <td> 0.00</td>
812
+
813
+ <td> 90000/90000</td>
814
+ <td class="method_name"><a href="#FSSM__Pathname_to_a_3696392">FSSM::Pathname#to_a</a></td>
815
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=52" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:52">52</a></td>
816
+ </tr>
817
+
818
+
819
+ <tr class="method">
820
+ <td> 1.79%</td>
821
+ <td> 1.79%</td>
822
+ <td> 0.26</td>
823
+ <td> 0.26</td>
824
+ <td> 0.00</td>
825
+ <td> 0.00</td>
826
+ <td> 90000</td>
827
+ <td class="method_name"><a name="Array_unshift_3696392">Array#unshift</a></td>
828
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
829
+ </tr>
830
+
831
+ <!-- Children -->
832
+
833
+ <!-- Create divider row -->
834
+ <tr class="break"><td colspan="9"></td></tr>
835
+
836
+
837
+ <!-- Parents -->
838
+
839
+
840
+ <tr>
841
+ <td>&nbsp;</td>
842
+ <td>&nbsp;</td>
843
+ <td> 0.25</td>
844
+ <td> 0.25</td>
845
+ <td> 0.00</td>
846
+ <td> 0.00</td>
847
+
848
+ <td> 90000/90000</td>
849
+ <td class="method_name"><a href="#Kernel_dup_3696392">Kernel#dup</a></td>
850
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=50" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:50">50</a></td>
851
+ </tr>
852
+
853
+
854
+ <tr class="method">
855
+ <td> 1.72%</td>
856
+ <td> 1.72%</td>
857
+ <td> 0.25</td>
858
+ <td> 0.25</td>
859
+ <td> 0.00</td>
860
+ <td> 0.00</td>
861
+ <td> 90000</td>
862
+ <td class="method_name"><a name="Array_initialize_copy_3696392">Array#initialize_copy</a></td>
863
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
864
+ </tr>
865
+
866
+ <!-- Children -->
867
+
868
+ <!-- Create divider row -->
869
+ <tr class="break"><td colspan="9"></td></tr>
870
+
871
+
872
+ <!-- Parents -->
873
+
874
+
875
+ <tr>
876
+ <td>&nbsp;</td>
877
+ <td>&nbsp;</td>
878
+ <td> 0.23</td>
879
+ <td> 0.23</td>
880
+ <td> 0.00</td>
881
+ <td> 0.00</td>
882
+
883
+ <td> 90000/90000</td>
884
+ <td class="method_name"><a href="#FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
885
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=218" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:218">218</a></td>
886
+ </tr>
887
+
888
+
889
+ <tr class="method">
890
+ <td> 1.61%</td>
891
+ <td> 1.61%</td>
892
+ <td> 0.23</td>
893
+ <td> 0.23</td>
894
+ <td> 0.00</td>
895
+ <td> 0.00</td>
896
+ <td> 90000</td>
897
+ <td class="method_name"><a name="MatchData_[]_3696392">MatchData#[]</a></td>
898
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
899
+ </tr>
900
+
901
+ <!-- Children -->
902
+
903
+ <!-- Create divider row -->
904
+ <tr class="break"><td colspan="9"></td></tr>
905
+
906
+
907
+ <!-- Parents -->
908
+
909
+
910
+ <tr>
911
+ <td>&nbsp;</td>
912
+ <td>&nbsp;</td>
913
+ <td> 0.21</td>
914
+ <td> 0.21</td>
915
+ <td> 0.00</td>
916
+ <td> 0.00</td>
917
+
918
+ <td> 90000/90000</td>
919
+ <td class="method_name"><a href="#FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
920
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=219" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:219">219</a></td>
921
+ </tr>
922
+
923
+
924
+ <tr class="method">
925
+ <td> 1.45%</td>
926
+ <td> 1.45%</td>
927
+ <td> 0.21</td>
928
+ <td> 0.21</td>
929
+ <td> 0.00</td>
930
+ <td> 0.00</td>
931
+ <td> 90000</td>
932
+ <td class="method_name"><a name="MatchData_post_match_3696392">MatchData#post_match</a></td>
933
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
934
+ </tr>
935
+
936
+ <!-- Children -->
937
+
938
+ <!-- Create divider row -->
939
+ <tr class="break"><td colspan="9"></td></tr>
940
+
941
+
942
+ <!-- Parents -->
943
+
944
+
945
+ <tr>
946
+ <td>&nbsp;</td>
947
+ <td>&nbsp;</td>
948
+ <td> 0.20</td>
949
+ <td> 0.20</td>
950
+ <td> 0.00</td>
951
+ <td> 0.00</td>
952
+
953
+ <td> 90000/90000</td>
954
+ <td class="method_name"><a href="#Kernel_dup_3696392">Kernel#dup</a></td>
955
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=50" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:50">50</a></td>
956
+ </tr>
957
+
958
+
959
+ <tr class="method">
960
+ <td> 1.41%</td>
961
+ <td> 1.41%</td>
962
+ <td> 0.20</td>
963
+ <td> 0.20</td>
964
+ <td> 0.00</td>
965
+ <td> 0.00</td>
966
+ <td> 90000</td>
967
+ <td class="method_name"><a name="_Class__Array__allocate_3696392">&lt;Class::Array&gt;#allocate</a></td>
968
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
969
+ </tr>
970
+
971
+ <!-- Children -->
972
+
973
+ <!-- Create divider row -->
974
+ <tr class="break"><td colspan="9"></td></tr>
975
+
976
+
977
+ <!-- Parents -->
978
+
979
+
980
+ <tr>
981
+ <td>&nbsp;</td>
982
+ <td>&nbsp;</td>
983
+ <td> 0.19</td>
984
+ <td> 0.19</td>
985
+ <td> 0.00</td>
986
+ <td> 0.00</td>
987
+
988
+ <td> 90000/90000</td>
989
+ <td class="method_name"><a href="#FSSM__Pathname_initialize_3696392">FSSM::Pathname#initialize</a></td>
990
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=35" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:35">35</a></td>
991
+ </tr>
992
+
993
+
994
+ <tr class="method">
995
+ <td> 1.35%</td>
996
+ <td> 1.35%</td>
997
+ <td> 0.19</td>
998
+ <td> 0.19</td>
999
+ <td> 0.00</td>
1000
+ <td> 0.00</td>
1001
+ <td> 90000</td>
1002
+ <td class="method_name"><a name="String_initialize_3696392">String#initialize</a></td>
1003
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
1004
+ </tr>
1005
+
1006
+ <!-- Children -->
1007
+
1008
+ <!-- Create divider row -->
1009
+ <tr class="break"><td colspan="9"></td></tr>
1010
+
1011
+
1012
+ <!-- Parents -->
1013
+
1014
+
1015
+ <tr>
1016
+ <td>&nbsp;</td>
1017
+ <td>&nbsp;</td>
1018
+ <td> 0.18</td>
1019
+ <td> 0.18</td>
1020
+ <td> 0.00</td>
1021
+ <td> 0.00</td>
1022
+
1023
+ <td> 90000/90000</td>
1024
+ <td class="method_name"><a href="#Class_new_3696392">Class#new</a></td>
1025
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=35" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:35">35</a></td>
1026
+ </tr>
1027
+
1028
+
1029
+ <tr class="method">
1030
+ <td> 1.26%</td>
1031
+ <td> 1.26%</td>
1032
+ <td> 0.18</td>
1033
+ <td> 0.18</td>
1034
+ <td> 0.00</td>
1035
+ <td> 0.00</td>
1036
+ <td> 90000</td>
1037
+ <td class="method_name"><a name="_Class__String__allocate_3696392">&lt;Class::String&gt;#allocate</a></td>
1038
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
1039
+ </tr>
1040
+
1041
+ <!-- Children -->
1042
+
1043
+ <!-- Create divider row -->
1044
+ <tr class="break"><td colspan="9"></td></tr>
1045
+
1046
+
1047
+ <!-- Parents -->
1048
+
1049
+
1050
+ <tr>
1051
+ <td>&nbsp;</td>
1052
+ <td>&nbsp;</td>
1053
+ <td> 0.17</td>
1054
+ <td> 0.17</td>
1055
+ <td> 0.00</td>
1056
+ <td> 0.00</td>
1057
+
1058
+ <td> 90000/90000</td>
1059
+ <td class="method_name"><a href="#FSSM__Pathname_set_prefix_and_names_3696392">FSSM::Pathname#set_prefix_and_names</a></td>
1060
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=225" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:225">225</a></td>
1061
+ </tr>
1062
+
1063
+
1064
+ <tr class="method">
1065
+ <td> 1.19%</td>
1066
+ <td> 1.19%</td>
1067
+ <td> 0.17</td>
1068
+ <td> 0.17</td>
1069
+ <td> 0.00</td>
1070
+ <td> 0.00</td>
1071
+ <td> 90000</td>
1072
+ <td class="method_name"><a name="Array_compact!_3696392">Array#compact!</a></td>
1073
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
1074
+ </tr>
1075
+
1076
+ <!-- Children -->
1077
+
1078
+ <!-- Create divider row -->
1079
+ <tr class="break"><td colspan="9"></td></tr>
1080
+
1081
+
1082
+ <!-- Parents -->
1083
+
1084
+
1085
+ <tr>
1086
+ <td>&nbsp;</td>
1087
+ <td>&nbsp;</td>
1088
+ <td> 0.16</td>
1089
+ <td> 0.16</td>
1090
+ <td> 0.00</td>
1091
+ <td> 0.00</td>
1092
+
1093
+ <td> 90000/90000</td>
1094
+ <td class="method_name"><a href="#FSSM__Pathname_to_a_3696392">FSSM::Pathname#to_a</a></td>
1095
+ <td><a href="file:///Users/ttilley/tmp/fssm/lib/fssm/pathname.rb#line=52" title="/Users/ttilley/tmp/fssm/lib/fssm/pathname.rb:52">52</a></td>
1096
+ </tr>
1097
+
1098
+
1099
+ <tr class="method">
1100
+ <td> 1.11%</td>
1101
+ <td> 1.11%</td>
1102
+ <td> 0.16</td>
1103
+ <td> 0.16</td>
1104
+ <td> 0.00</td>
1105
+ <td> 0.00</td>
1106
+ <td> 90000</td>
1107
+ <td class="method_name"><a name="String_empty__3696392">String#empty?</a></td>
1108
+ <td><a href="file:///Users/ttilley/tmp/fssm/profile/ruby_runtime#line=0" title="/Users/ttilley/tmp/fssm/profile/ruby_runtime:0">0</a></td>
1109
+ </tr>
1110
+
1111
+ <!-- Children -->
1112
+
1113
+ <!-- Create divider row -->
1114
+ <tr class="break"><td colspan="9"></td></tr>
1115
+
1116
+ </table>
1117
+
1118
+ </body>
1119
+ </html>