Skip to content

Instantly share code, notes, and snippets.

@timo
Created September 9, 2021 22:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timo/0f7a2430c26e431231eba1b551993dc8 to your computer and use it in GitHub Desktop.
Save timo/0f7a2430c26e431231eba1b551993dc8 to your computer and use it in GitHub Desktop.
timo micro-optimizes a surprisingly expensive function
before:
// random context
7.82% moar libmoar.so [.] MVM_interp_run
4.44% moar libmoar.so [.] MVM_frame_dispatch
3.75% moar libmoar.so [.] MVM_disp_program_run
3.34% moar libmoar.so [.] nqp_nfa_run
2.60% moar libmoar.so [.] MVM_fixed_size_alloc
2.51% moar libmoar.so [.] MVM_spesh_arg_guard_run
2.17% moar libmoar.so [.] allocate_frame
//[...]
1.35% moar [JIT] tid 2084179 [.] MATCH(gen/moar/stage2/QRegex.nqp:2152)
//[...]
0.40% moar [JIT] tid 2084179 [.] _ws(/home/timo/perl6/rakudo/blib/Perl6/Grammar.moarvm:1)
//[...]
0.34% moar [JIT] tid 2084179 [.] termish(gen/moar/Grammar.nqp:3711)
0.32% moar [JIT] tid 2084179 [.] !alt(gen/moar/stage2/QRegex.nqp:1743)
// important bit
0.30% moar [JIT] tid 2084179 [.] linefileof(gen/moar/stage2/NQPHLL.nqp:2499)
0.05% moar [JIT] tid 2084179 [.] line_and_column_of(gen/moar/stage2/NQPHLL.nqp:2439)
0.01% moar [JIT] tid 2084179 [.] linefileof(gen/moar/stage2/NQPHLL.nqp:2499)
0.00% moar [JIT] tid 2084179 [.] lineof(gen/moar/stage2/NQPHLL.nqp:2495)
after:
// random context
7.85% moar libmoar.so [.] MVM_interp_run
4.46% moar libmoar.so [.] MVM_frame_dispatch
3.50% moar libmoar.so [.] MVM_disp_program_run
3.42% moar libmoar.so [.] nqp_nfa_run
2.65% moar libmoar.so [.] MVM_fixed_size_alloc
2.47% moar libmoar.so [.] MVM_spesh_arg_guard_run
2.14% moar libmoar.so [.] allocate_frame
//[...]
1.42% moar [JIT] tid 2082768 [.] MATCH(gen/moar/stage2/QRegex.nqp:2152)
//[...]
0.44% moar [JIT] tid 2082768 [.] _ws(/home/timo/perl6/rakudo/blib/Perl6/Grammar.moarvm:1)
//[...]
0.37% moar [JIT] tid 2082768 [.] termish(gen/moar/Grammar.nqp:3711)
//[...]
0.33% moar [JIT] tid 2082768 [.] !alt(gen/moar/stage2/QRegex.nqp:1743)
//[...]
0.29% moar [JIT] tid 2082768 [.] visit_children(gen/moar/Optimizer.nqp:2832)
//[...]
0.27% moar [JIT] tid 2082768 [.] prepare-hash(gen/moar/stage2/NQPCORE.setting:402)
//[...]
0.26% moar [JIT] tid 2082768 [.] !cursor_start(gen/moar/stage2/QRegex.nqp:1481)
//[...]
0.25% moar [JIT] tid 2082768 [.] compile_var(gen/moar/stage2/QAST.nqp:6534)
//[... many many many lines ...]
0.06% moar [JIT] tid 2082768 [.] set(gen/moar/stage2/QASTNode.nqp:142)
0.06% moar [JIT] tid 2082768 [.] lexical_vars_to_locals(gen/moar/Optimizer.nqp:711)
0.06% moar [JIT] tid 2082768 [.] statementlist(gen/moar/Actions.nqp:1489)
0.05% moar [JIT] tid 2082768 [.] MARKER(gen/moar/stage2/NQPHLL.nqp:1437)
0.05% moar [JIT] tid 2082768 [.] release_register(gen/moar/stage2/QAST.nqp:5046)
0.05% moar [JIT] tid 2082768 [.] !cursor_start(gen/moar/stage2/QRegex.nqp:1481)
//[...]
0.05% moar [JIT] tid 2082768 [.] line_and_column_of(gen/moar/stage2/NQPHLL.nqp:2439)
0.01% moar [JIT] tid 2082768 [.] linefileof(gen/moar/stage2/NQPHLL.nqp:2499)
0.01% moar [JIT] tid 2082768 [.] linefileof(gen/moar/stage2/NQPHLL.nqp:2499)
0.00% moar [JIT] tid 2082768 [.] lineof(gen/moar/stage2/NQPHLL.nqp:2495)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment