Skip to content

Instantly share code, notes, and snippets.

@headius
Last active August 29, 2015 14:16
Show Gist options
  • Save headius/fd328074ac0e20a0a62f to your computer and use it in GitHub Desktop.
Save headius/fd328074ac0e20a0a62f to your computer and use it in GitHub Desktop.
Allocation profile of YorickPeterse/oga's XML parser bench, top ten items
percent live alloc'ed stack class
rank self accum bytes objs bytes objs trace name
1 13.76% 13.76% 30192480 377406 66869520 835869 436418 org.jruby.runtime.builtin.IRubyObject[]
2 8.29% 22.05% 18183744 378828 40121760 835870 436417 org.jruby.RubyArray
3 4.74% 26.79% 10402048 1 10402048 1 436358 byte[]
4 4.74% 31.53% 10402048 1 10402048 1 434525 byte[]
5 3.00% 34.53% 6584024 103390 6584024 103390 436490 byte[]
6 2.62% 37.15% 5747712 119744 15175824 316163 436391 org.jruby.RubyArray
7 1.89% 39.04% 4135600 103390 4135600 103390 436491 org.jruby.RubyString
8 1.89% 40.93% 4135600 103390 4135600 103390 436489 org.jruby.util.ByteList
9 1.63% 42.55% 3573952 55843 3573952 55843 440715 org.jruby.RubyHash$RubyHashEntry[]
10 1.51% 44.06% 3305696 103303 3305696 103303 438508 java.util.concurrent.locks.ReentrantLock$NonfairSync
TRACE 436417:
org.jruby.RubyBasicObject.<init>(RubyBasicObject.java:234)
org.jruby.RubyObject.<init>(RubyObject.java:96)
org.jruby.RubyArray.<init>(RubyArray.java:308)
org.jruby.RubyArray.newArray(RubyArray.java:160)
org.jruby.RubyArray.newArray(RubyArray.java:175)
org.jruby.Ruby.newArray(Ruby.java:3275)
org.libll.Driver$2.call(Driver.java:195)
org.jruby.runtime.CallBlock19.yieldSpecific(CallBlock19.java:76)
org.jruby.runtime.Block.yieldSpecific(Block.java:120)
org.jruby.ast.YieldOneNode.interpret(YieldOneNode.java:35)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:194)
org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:125)
org.jruby.runtime.Block.call(Block.java:101)
org.jruby.RubyProc.call(RubyProc.java:290)
org.jruby.RubyProc.call19(RubyProc.java:271)
org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen:Unknown line)
TRACE 436418:
org.jruby.RubyArray.<init>(RubyArray.java:309)
org.jruby.RubyArray.newArray(RubyArray.java:160)
org.jruby.RubyArray.newArray(RubyArray.java:175)
org.jruby.Ruby.newArray(Ruby.java:3275)
org.libll.Driver$2.call(Driver.java:195)
org.jruby.runtime.CallBlock19.yieldSpecific(CallBlock19.java:76)
org.jruby.runtime.Block.yieldSpecific(Block.java:120)
org.jruby.ast.YieldOneNode.interpret(YieldOneNode.java:35)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:194)
org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:125)
org.jruby.runtime.Block.call(Block.java:101)
org.jruby.RubyProc.call(RubyProc.java:290)
org.jruby.RubyProc.call19(RubyProc.java:271)
org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen:Unknown line)
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:226)
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:222)
TRACE 436358:
org.jruby.util.ByteList.bytes(ByteList.java:1066)
org.jruby.RubyString.getBytes(RubyString.java:7680)
org.liboga.xml.Lexer.advance_native(Lexer.java:361)
org.liboga.xml.Lexer$INVOKER$i$1$0$advance_native.call(Lexer$INVOKER$i$1$0$advance_native.gen:Unknown line)
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:135)
org.jruby.runtime.Block.yieldSpecific(Block.java:120)
org.jruby.ast.YieldOneNode.interpret(YieldOneNode.java:35)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.ast.IfNode.interpret(IfNode.java:116)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:195)
TRACE 434525:
org.jruby.util.ByteList.<init>(ByteList.java:91)
org.jruby.util.io.ChannelStream.readall(ChannelStream.java:421)
org.jruby.RubyIO.readAllCommon(RubyIO.java:3285)
org.jruby.RubyIO.readAll(RubyIO.java:3266)
org.jruby.RubyIO.read(RubyIO.java:3065)
org.jruby.RubyIO$INVOKER$i$read.call(RubyIO$INVOKER$i$read.gen:Unknown line)
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)
org.jruby.ast.ReturnNode.interpret(ReturnNode.java:92)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:187)
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
benchmark.xml.parser.parser_bench.__file__(benchmark/xml/parser/parser_bench.rb:3)
benchmark.xml.parser.parser_bench.load(benchmark/xml/parser/parser_bench.rb:Unknown line)
org.jruby.Ruby.runScript(Ruby.java:866)
org.jruby.Ruby.runScript(Ruby.java:859)
TRACE 436490:
org.jruby.util.ByteList.<init>(ByteList.java:228)
org.liboga.xml.Lexer.callback(Lexer.java:1031)
org.liboga.xml.Lexer.advance_native(Lexer.java:775)
org.liboga.xml.Lexer$INVOKER$i$1$0$advance_native.call(Lexer$INVOKER$i$1$0$advance_native.gen:Unknown line)
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:135)
org.jruby.runtime.Block.yieldSpecific(Block.java:120)
org.jruby.ast.YieldOneNode.interpret(YieldOneNode.java:35)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.ast.IfNode.interpret(IfNode.java:116)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:195)
TRACE 436391:
org.jruby.RubyBasicObject.<init>(RubyBasicObject.java:234)
org.jruby.RubyObject.<init>(RubyObject.java:96)
org.jruby.RubyArray.<init>(RubyArray.java:266)
org.jruby.RubyArray.newArrayNoCopy(RubyArray.java:222)
org.jruby.Ruby.newArrayNoCopy(Ruby.java:3295)
org.jruby.ast.ArrayNode.interpret(ArrayNode.java:86)
org.jruby.ast.YieldOneNode.interpret(YieldOneNode.java:35)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:194)
org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:125)
org.jruby.runtime.Block.call(Block.java:101)
org.jruby.RubyProc.call(RubyProc.java:290)
org.jruby.RubyProc.call19(RubyProc.java:271)
org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen:Unknown line)
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:226)
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:222)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:236)
TRACE 436491:
org.jruby.RubyBasicObject.<init>(RubyBasicObject.java:234)
org.jruby.RubyObject.<init>(RubyObject.java:96)
org.jruby.RubyString.<init>(RubyString.java:431)
org.jruby.RubyString.newString(RubyString.java:526)
org.jruby.Ruby.newString(Ruby.java:3387)
org.liboga.xml.Lexer.callback(Lexer.java:1033)
org.liboga.xml.Lexer.advance_native(Lexer.java:775)
org.liboga.xml.Lexer$INVOKER$i$1$0$advance_native.call(Lexer$INVOKER$i$1$0$advance_native.gen:Unknown line)
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:135)
org.jruby.runtime.Block.yieldSpecific(Block.java:120)
org.jruby.ast.YieldOneNode.interpret(YieldOneNode.java:35)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.ast.IfNode.interpret(IfNode.java:116)
TRACE 436489:
org.jruby.util.ByteList.<init>(ByteList.java:222)
org.liboga.xml.Lexer.callback(Lexer.java:1031)
org.liboga.xml.Lexer.advance_native(Lexer.java:775)
org.liboga.xml.Lexer$INVOKER$i$1$0$advance_native.call(Lexer$INVOKER$i$1$0$advance_native.gen:Unknown line)
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:157)
org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:135)
org.jruby.runtime.Block.yieldSpecific(Block.java:120)
org.jruby.ast.YieldOneNode.interpret(YieldOneNode.java:35)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.ast.IfNode.interpret(IfNode.java:116)
org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:195)
TRACE 440715:
org.jruby.RubyHash.allocFirst(RubyHash.java:289)
org.jruby.RubyHash.<init>(RubyHash.java:257)
org.jruby.RubyHash.<init>(RubyHash.java:251)
org.jruby.RubyHash.newHash(RubyHash.java:205)
rubyjit.Oga::XML::Element$$initialize_dc28c12e8c5766c5f63475052bd2ca6d30e959461442407170.__file__(/Users/headius/projects/oga/lib/oga/xml/element.rb:51)
rubyjit.Oga::XML::Element$$initialize_dc28c12e8c5766c5f63475052bd2ca6d30e959461442407170.__file__(/Users/headius/projects/oga/lib/oga/xml/element.rb:Unknown line)
org.jruby.ast.executable.AbstractScript.__file__(AbstractScript.java:42)
org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:201)
org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:177)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:183)
org.jruby.RubyClass.newInstance(RubyClass.java:856)
org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen:Unknown line)
org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrNBlock.call(JavaMethod.java:297)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
rubyjit.Oga::XML::Parser$$on_element_f9a07c3087274da96e0f4341e3f0ff37343a10f51442407170.__file__(/Users/headius/projects/oga/lib/oga/xml/parser.rb:372)
rubyjit.Oga::XML::Parser$$on_element_f9a07c3087274da96e0f4341e3f0ff37343a10f51442407170.__file__(/Users/headius/projects/oga/lib/oga/xml/parser.rb:Unknown line)
org.jruby.ast.executable.AbstractScript.__file__(AbstractScript.java:50)
org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:261)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:236)
rubyjit.Oga::XML::Parser$$_rule_29_c33b61259e3ec3bcaba8a5f1b4414bf5e45eae511442407170.__file__(/Users/headius/projects/oga/lib/oga/xml/parser.rb:555)
TRACE 438508:
java.util.concurrent.locks.AbstractOwnableSynchronizer.<init>(AbstractOwnableSynchronizer.java:59)
java.util.concurrent.locks.AbstractQueuedSynchronizer.<init>(AbstractQueuedSynchronizer.java:299)
java.util.concurrent.locks.ReentrantLock$Sync.<init>(ReentrantLock.java:116)
java.util.concurrent.locks.ReentrantLock$NonfairSync.<init>(ReentrantLock.java:198)
java.util.concurrent.locks.ReentrantLock.<init>(ReentrantLock.java:257)
org.jruby.ext.thread.Mutex.<init>(Mutex.java:48)
org.jruby.ext.thread.Mutex.newInstance(Mutex.java:52)
org.jruby.ext.thread.Mutex$INVOKER$s$0$0$newInstance.call(Mutex$INVOKER$s$0$0$newInstance.gen:Unknown line)
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:202)
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:198)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
rubyjit.Oga::XML::Text$$initialize_67dceb0e7ac46fb14e454ac554ee7628089668b81442407170.__file__(/Users/headius/projects/oga/lib/oga/xml/text.rb:11)
rubyjit.Oga::XML::Text$$initialize_67dceb0e7ac46fb14e454ac554ee7628089668b81442407170.__file__(/Users/headius/projects/oga/lib/oga/xml/text.rb:Unknown line)
org.jruby.ast.executable.AbstractScript.__file__(AbstractScript.java:42)
org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:201)
org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:177)
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:183)
org.jruby.RubyClass.newInstance(RubyClass.java:856)
org.jruby.RubyClass$INVOKER$i$newInstance.call(RubyClass$INVOKER$i$newInstance.gen:Unknown line)
org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrNBlock.call(JavaMethod.java:297)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment