[MacRuby-devel] [MacRuby] #424: performance regression from ruby 1.8 and 1.9
MacRuby
ruby-noreply at macosforge.org
Tue Nov 10 16:38:56 PST 2009
#424: performance regression from ruby 1.8 and 1.9
-------------------------------------+--------------------------------------
Reporter: jordan.breeding@… | Owner: lsansonetti@…
Type: defect | Status: new
Priority: blocker | Milestone:
Component: MacRuby | Keywords:
-------------------------------------+--------------------------------------
Comment(by jordan.breeding@…):
I can look into it more later, the ones posted above actually only require
two smallish ruby files out of the lib directory from my archive, I could
just paste them into the top of the other file and upload it as a new
attachment if that would help in any way.
In the mean time I used DTrace to get some timings for functions/methods
from ruby and MacRuby
ruby:
{{{
13 jordan at thetourist ~/priority_queue_bug > sudo dtrace -s
ruby_method_analysis.d -c "ruby ./search.pqueue -m -c a-star
input_files/input13_4.txt"
Password:
Target pid: 352
Step 0: bbwxbwbwbwwbw (c=0)
Step 1: move 6 bbwbbwxwbwwbw (c=3)
Step 2: move 5 bbwbbxwwbwwbw (c=1)
Step 3: move 8 bbwbbbwwxwwbw (c=3)
Step 4: move 2 bbxbbbwwwwwbw (c=6)
Step 5: move 11 bbbbbbwwwwwxw (c=9)
Step 6: move 6 bbbbbbxwwwwww (c=5)
CLASS METHOD
COUNT AVG(us) SUM(us)
-----------------------------------------------------------------------------------------------------------------------
String split
3298 36 121861
IO write
16 19 307
String %
6 16 98
Exception initialize
1 16 16
JBBNodePriority initialize
3308 16 53831
Exception set_backtrace
1 15 15
Range each
3299 15 51517
String initialize_copy
42886 14 619271
Exception backtrace
1 14 14
Fixnum to_s
15 14 213
JBBNode priority
38826 14 544505
JBBNode to_s
7 13 97
Hash []=
381 13 5291
Hash include?
8629 13 117828
String index
3298 13 44610
String length
3300 13 43452
String []=
79176 13 1034814
Array push
381 13 4971
Array to_a
3299 12 42753
Array []=
18440 12 237676
Fixnum div
7236 12 93047
Fixnum <=>
5068 12 64921
String ==
53172 12 679790
Array []
87152 12 1109695
String []
79176 12 1007480
Fixnum ==
42887 12 544730
Fixnum abs
20086 12 255014
Fixnum /
9894 12 125471
Hash []
16788 12 211988
Fixnum >
31024 12 390794
Fixnum *
21067 12 264933
Fixnum <
28374 12 355145
Fixnum -
24145 12 302109
Fixnum +
81377 12 1017731
}}}
MacRuby:
{{{
14 jordan at thetourist ~/priority_queue_bug > sudo dtrace -s
macruby_method_analysis.d -c "macruby ./search.pqueue -m -c a-star
input_files/input13_4.txt"
Target pid: 360
Step 0: bbwxbwbwbwwbw (c=0)
Step 1: move 6 bbwbbwxwbwwbw (c=3)
Step 2: move 5 bbwbbxwwbwwbw (c=1)
Step 3: move 8 bbwbbbwwxwwbw (c=3)
Step 4: move 2 bbxbbbwwwwwbw (c=6)
Step 5: move 11 bbbbbbwwwwwxw (c=9)
Step 6: move 6 bbbbbbxwwwwww (c=5)
CLASS METHOD
COUNT AVG(us) SUM(us)
-----------------------------------------------------------------------------------------------------------------------
PQueue initialize
1 9068 9068
Class protected:
1 6113 6113
Revision initialize:
2 1456 2912
Class private:
11 1398 15381
OptionParser::List each_option
6 861 5167
Class attr_reader:
11 685 7541
Class gm:
1 663 663
Class include:
5 646 3231
NSMutableArray extend:
1 613 613
NSMutableArray <=>:
1 571 571
NSMutableString %:
13 550 7151
Class attr_accessor:
4 545 2180
OptionParser::OptionMap invert
14 524 7346
Enumerator to_a
3634 517 1880180
JBBNode <=>:
22168 429 9528017
Class extend_object:
3 422 1267
NSMutableArray each
3654 364 1333418
FalseClass ===:
20 345 6901
NSMutableString scan:
1 344 344
NilClass ===:
20 343 6878
TrueClass ===:
20 342 6852
Range to_a
3633 323 1176485
NSMutableDictionary update:
7 319 2239
Class attr:
1 314 314
Class attr_writer:
5 297 1488
Class new
7 289 2024
OptionParser::OptionMap []:
2 283 566
OptionParser::List __send__:
86 281 24238
NSMutableArray each_with_index
1 275 275
Class new:
3639 270 985681
NSMutableArray delete_if
7 254 1782
Proc call:
4 253 1015
Class append_features:
5 247 1236
ByteString swap!:
43596 241 10536678
Set initialize
1 199 199
OptionParser::CompletingHash []=:
7 182 1279
OptionParser::List initialize
3 148 445
Class readlines:
1 139 139
OptionParser::Switch::NoArgument initialize:
6 135 810
OptionParser::Switch::RequiredArgument initialize:
1 132 132
Class alloc
3636 124 452700
NSMutableString *:
4 121 487
Method to_proc
1 119 119
NSArray <<:
2 119 238
NSMutableString +:
2 117 234
JBBNodePriority initialize:
3632 116 423058
OptionParser::OptionMap default:
2 115 231
Class extended:
2 114 229
Proc initialize
4 114 458
OptionParser::List atype
81 114 9275
Range each
3634 114 415928
NilClass ==:
20 113 2277
Class included:
5 113 565
FalseClass ==:
20 112 2259
Class >=:
2 112 224
TrueClass ==:
20 112 2240
NilClass singleton_method_added:
1 110 110
Class method_added:
232 110 25593
Class ==:
4 110 440
NSObject singleton_method_added:
1 109 109
Proc to_proc
119 108 12946
Class inherited:
23 107 2462
OptionParser::Switch::OptionalArgument ==:
1 106 106
OptionParser::Switch::RequiredArgument ==:
12 106 1274
JBBNode to_s
7 105 738
OptionParser::Switch::NoArgument ==:
33 104 3458
Regexp ==:
6 102 617
OptionParser::List short
6 100 605
NSMutableString chars
2 94 189
Class exists?:
1 92 92
ByteString chars
7266 90 659583
ByteString strip
1 89 89
Class dirname:
1 87 87
ByteString downcase
1 81 81
NSMutableString =~:
1 70 70
JBBNode puts:
7 63 445
NSMutableArray reject
3633 59 217170
NSMutableArray method:
1 58 58
ByteString count:
3 56 169
NSMutableArray join:
1 55 55
Class lambda
5 55 275
NSMutableArray instance_eval
1 53 53
JBBSearch start_node
1 53 53
Class file?:
1 48 48
JBBNode puts
2 47 95
NSMutableArray length
2 46 93
Fixnum to_s
1 41 41
NSMutableString split:
3 40 121
PQueue lambda
1 40 40
OptionParser version=:
1 38 38
NSMutableArray at:
6 37 225
OptionParser::CompletingHash respond_to?:
2 36 72
NSMutableArray unshift:
1 35 35
Class basename:
1 34 34
NSObject include?:
1 33 33
NSMutableString downcase
8 33 267
PQueue loop
1 33 33
OptionParser banner=:
1 32 32
OptionParser::OptionMap []=:
17 32 546
NSMutableDictionary fetch:
81 31 2548
JBBNode save_path:
1 30 30
ByteString []:
87192 30 2689254
ByteString =~:
1 30 30
NSMutableArray []=:
1 29 29
Revision contents
1 29 29
NSMutableDictionary keys
20 29 587
Class
incompatible_argument_styles: 1 29 29
ByteString dup
47229 29 1378244
OptionParser::OptionMap fetch:
5 29 145
NSMutableArray []:
1 28 28
NSMutableArray push:
426 28 12089
OptionParser::Switch::NoArgument block
2 28 56
Class const_set:
9 28 254
Set add:
413 27 11538
OptionParser::Switch::NoArgument conv
4 27 110
OptionParser::Switch::RequiredArgument match_nonswitch?:
2 27 55
OptionParser::Switch::NoArgument match_nonswitch?:
12 27 330
JBBNode child_for_goal
7 26 187
OptionParser::List long
3 26 79
Regexp respond_to?:
11 26 289
OptionParser top
5 26 130
OptionParser base
3 25 77
OptionParser::List list
6 25 154
NSMutableArray size
1 25 25
NSMutableDictionary freeze
1 25 25
JBBNode state
413 25 10589
OptionParser notwice:
2 25 51
NSMutableString freeze
12 25 300
OptionParser::List block_given?
9 25 225
NSMutableArray freeze
5 24 124
ByteString index:
3633 24 90215
Class pattern
6 24 148
Class proc
3 24 74
OptionParser block_given?
30 24 733
JBBNode node_cost
7 24 170
NSMutableArray empty?
8 24 194
JBBNode parent
832 24 20204
NSMutableArray shift
5 24 121
Class top
13 24 312
JBBNodePriority second_level
5258 23 126144
NSMutableString to_i
12 23 286
JBBNode expanded_children
412 23 9833
NSMutableDictionary include?:
9376 23 221179
JBBNodePriority first_level
38373 22 871790
JBBNode blank
3638 22 82600
NilClass nil?
3 22 67
ByteString []=:
87192 22 1945721
JBBNode level
4103 22 91287
JBBNode cost
7264 22 161085
Fixnum <=>:
5260 21 115443
JBBNode heuristic
3632 21 76630
JBBNode priority
40704 20 850370
Fixnum abs
22199 20 460471
Fixnum div:
7921 19 153603
}}}
--
Ticket URL: <http://www.macruby.org/trac/ticket/424#comment:5>
MacRuby <http://macruby.org/>
More information about the MacRuby-devel
mailing list