Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Benchmarks in production applications #102

Open
pablogsal opened this issue Oct 18, 2021 · 17 comments
Open

Benchmarks in production applications #102

pablogsal opened this issue Oct 18, 2021 · 17 comments
Labels
benchmarking Anything related to measurement: Adding new benchmarks, benchmarking infrastructure etc.

Comments

@pablogsal
Copy link
Collaborator

After some talk with @gvanrossum we discuss the possibility of gathering benchmarks from big production-grade applications. I talked with my employer (Bloomberg) and we have a couple of very large, performance-critical Python applications we could use as a performance target (as another source of data). I discussed the possibility of getting some engineer hours from the teams in charge of these applications for helping to build some kind of automated system that allows running some benchmark based on production data with different versions of CPython (so we can compare different commits in the main branch or for different proposals).

I open this issue to gather first what kind of "requirements" or data are we interested in so we can talk internally on how to prepare and build this. For instance, are we just looking at "time it takes per request" or "time per opcode" or something like that.

As a note, the code of the application itself cannot be made public for obvious reasons but (after checking with the legal department) we can possibly discuss the general nature of the applications if there are questions.

@gvanrossum
Copy link
Collaborator

This is great! @markshannon will write something about the kinds of numbers we'd like to see.

@markshannon
Copy link
Member

I think there are a few things that would be useful.

  • Whatever metric actually matters for this application; request per second, or whatever. So that we can say "makes real world application faster by ..."
  • A perf breakdown of where the application spends its time
  • The printout with specialization stats turned on

@pablogsal
Copy link
Collaborator Author

@markshannon For the perf breakdown you means something like % of every opcode?

@gvanrossum
Copy link
Collaborator

Here's a progress report from @pablogsal:

  • I talked with legal and other related departments and this aspect is already sorted out. We are still pending a talk with CTO, but I don't expect anything relevant from them.

  • We already have identified parts of the application that are big enough and critical enough to provide good benchmark candidates.

  • Currently we are working on what's going to be the most annoying part: there are many dependencies of this application that don't work on the current main branch due to the following:

  • Lack of wheels for 3.11.
  • Cython not working for 3.11.
  • Changes to the C-API

Also, there are some internal dependencies in Bloomberg packages that we need to ensure that also work on main.

We are currently investigating what's the best way to obtain something that we can benchmark without having to fix all of these or if we can substitute those dependencies for other pure python ones

  • When this is sorted, we want to make an investigation into the stability of the benchmarks to ensure we are not going to have lot of noise. The application is big enough that although there is no big I/O on the middle, is not trivial to know how stable the benchmarks are.

  • Once all this is sorted, we will hook this up to pyperformance for easy testing of new versions.

As you can see, we are progressing, but the biggest pain is going to be figuring out that this works for 3.11, which is a bit of packaging hell, but I think we will get there.

@markshannon
Copy link
Member

@markshannon For the perf breakdown you means something like % of every opcode?

No. Just the usual perf output: %time in each C function, etc.

@gramster gramster moved this to Todo in Fancy CPython Board Jan 10, 2022
@gramster gramster moved this from Todo to Other in Fancy CPython Board Jan 10, 2022
@gramster gramster moved this from Other to Todo in Fancy CPython Board Jan 24, 2022
@mdboom mdboom added the benchmarking Anything related to measurement: Adding new benchmarks, benchmarking infrastructure etc. label Aug 2, 2022
@domik82
Copy link

domik82 commented Oct 11, 2022

Hi,

I spotted this project and I have a thought - it was said that there is a need for a "production" like application.
I wonder - maybe it would be worth also using https://github.com/locustio/locust framework as a reference point.

This is quite a popular framework for doing performance tests - an alternative for JMeter / Gatling / k6.

It has master/worker concept and uses requests/urllib3 | gevents | ZMQ. So I guess "normal" usage of the basic libs. Apart from that there would be some "basic" code usage of lists etc.

People might add their own code on top of it - like here is a bunch of plugins - https://github.com/SvenskaSpel/locust-plugins
My team has own code to send stats to InfluxDB or process data on websockets.

I guess any optimization in the usage of libraries underneath like requests/SSL will bring gains that would be visible as the possibility to generate more Virtual Users per worker/CPU. Normally when too many Virtual Users are generated on a single CPU - it will get exhausted and the context switch will affect response time giving unrealistic values. This is the point when more workers have to be added to the pool.

This could work hand in hand with some very basic Flask application that would just serve as a testing point and return " hello world" - although you could embed some "real code" underneath to have a more realistic scenario of application usage. I can imagine it could save/get data using Mongo or call simple SQL with some other DB. The logs would interact with disk giving you and I/O stats.

Depending on the scenario you could observe - CPU usage on Locust side - with same load and optimization usage should drop. At the same time optimization on the server side will give probably a slightly higher RPS and/or faster response time to the user - it is also possible that CPU usage will change.

I'm not sure how memory allocation would change - I guess driver will be the number of concurrent sessions.

I'm not sure if this is something that you are looking for.

@gvanrossum
Copy link
Collaborator

It looks like Locust is mainly intended for app developers to be able to create flexible testing scenarios for their web apps (I presume by creating synthetic loads). That's not exactly what we're looking for here -- we're looking for apps that are already developed for which we can measure their performance under a load already defined. So if you have a particular app that you don't mind sharing and you have developed a Locust-based synthetic load for it, we would love to be able to compare how your app performs under Python 3.10 and 3.11. But if you have some other way of stress-testing your app we would be just as happy -- as long as your app can run under 3.10 and 3.11 (or, hopefully, what's in main, but I don't want to press my luck :-).

@utkarshgupta137
Copy link

It looks like Locust is mainly intended for app developers to be able to create flexible testing scenarios for their web apps (I presume by creating synthetic loads). That's not exactly what we're looking for here -- we're looking for apps that are already developed for which we can measure their performance under a load already defined. So if you have a particular app that you don't mind sharing and you have developed a Locust-based synthetic load for it, we would love to be able to compare how your app performs under Python 3.10 and 3.11. But if you have some other way of stress-testing your app we would be just as happy -- as long as your app can run under 3.10 and 3.11 (or, hopefully, what's in main, but I don't want to press my luck :-).

We have a FastAPI microservice (py3.10) in production for which we've developed tests in locust to repeat the requests we get in production.
It uses two redis clusters, queries solr using aiohttp, and finally queries a model on a (different) Tensorflow Serving VM via grpcio. All of these tasks are async & it also has a few list, dict, & NumPy ops. I think I should be able to run it with py3.11 too.
I don't think I can share the code verbatim, but I can perform benchmarks on isolated VMs & share a few critical sections. Would you be interested in benchmarks of such an app?

@gvanrossum
Copy link
Collaborator

I would be super interested if you could do those benchmarks! In particular comparing 3.10 and 3.11 in a real world app would be huge. I am prepared to be disappointed, because usually real-world performance is not just about CPU usage of the language the main app is written in... But nevertheless I would love to hear from you.

@utkarshgupta137
Copy link

utkarshgupta137 commented Oct 11, 2022

I would be super interested if you could do those benchmarks! In particular comparing 3.10 and 3.11 in a real world app would be huge. I am prepared to be disappointed, because usually real-world performance is not just about CPU usage of the language the main app is written in... But nevertheless I would love to hear from you.

All times are in milliseconds.

Python 3.10.7:
Mean: 33
Median: 23-24 (mostly 23)
90%: 41
95%: 57-62
99%: 200

Python 3.11.0rc2
Mean: 32
Median: 21-22 (mostly 22)
90%: 39
95%: 54-58
99%: 190

Memory usage was almost the same, but CPU usage looked slightly lower. But I can't be more specific without a graph.

Nonetheless, this is an impressive result considering that this service is very database intensive (Around 4-10 redis gets, 1-6 redis sets, 1-5 solr queries, & 1 TF serving call). But it also has a lot of list & dict comprehensions as well as multiple dicts with 700K & 1M elements, which I think is responsible for the performance improvement.

I'll see if I can share the source code by obfuscating some parts. It might be better if I replace the database calls completely with sleep so that you could run it on your side.

@utkarshgupta137
Copy link

Fun fact: I had rewritten this service in rust (with actix-web & async for all database calls) & I got 17-18ms median latency with it. I think this makes the 3.11 improvement more impressive if we consider the python overhead compared to rust.

@gvanrossum
Copy link
Collaborator

Thanks for the quick results! It sounds like 3-5% faster, which for a real-world app is not easy.

@brandtbucher
Copy link
Member

brandtbucher commented Oct 12, 2022

Might be interesting to gather 3.11 stats, if you're comfortable compiling Python from source. This basically dumps tons of internal counters that allow us to see how well the interpreter is handling your program (without giving us access to the source of the program itself).

Basically, configure --with-pystats, build, make an empty /tmp/py_stats directory, run your program, and run Tools/scripts/summarize_stats.py from the main repo using the same Python. It will dump a few thousand lines of markdown to stdout, which you can drop into a comment here. To see what type of information is gathered, see this example.

@utkarshgupta137
Copy link

Might be interesting to gather 3.11 stats, if you're comfortable compiling Python from source. This basically dumps tons of internal counters that allow us to see how well the interpreter is handling your program (without giving us access to the source of the program itself).

Basically, configure --with-pystats, build, make an empty /tmp/py_stats directory, run your program, and run Tools/scripts/summarize_stats.py from the main repo using the same Python. It will dump a few thousand lines of markdown to stdout, which you can drop into a comment here. To see what type of information is gathered, see this example.

Sure, I'll try it tomorrow.

@corona10
Copy link

Might be interesting to gather 3.11 stats, if you're comfortable compiling Python from source. This basically dumps tons of internal counters that allow us to see how well the interpreter is handling your program (without giving us access to the source of the program itself).

Hmm, I will try to ask my company's (LINE/NAVER) machine-learning team(I can sure that they have enough workload for the APAC area, especially for Korea/Japan) if they can share bytecode execution information.

@utkarshgupta137
Copy link

utkarshgupta137 commented Oct 31, 2022

Might be interesting to gather 3.11 stats, if you're comfortable compiling Python from source. This basically dumps tons of internal counters that allow us to see how well the interpreter is handling your program (without giving us access to the source of the program itself).

Basically, configure --with-pystats, build, make an empty /tmp/py_stats directory, run your program, and run Tools/scripts/summarize_stats.py from the main repo using the same Python. It will dump a few thousand lines of markdown to stdout, which you can drop into a comment here. To see what type of information is gathered, see this example.

I built python by modifying this Dockerfile which is used in the official py3.11.0 docker builds. I just added --enable-pystats (--with-pystats doesn't work) to the configure step.

Here is the output after 15k requests:

Execution counts

execution counts for all instructions
Name Count Self Cumulative Miss ratio
LOAD_FAST 124398671 12.9% 12.9%
LOAD_CONST 58825706 6.1% 19.0%
FOR_ITER 42738132 4.4% 23.4%
STORE_FAST__LOAD_FAST 37837337 3.9% 27.4%
JUMP_BACKWARD_QUICK 35043528 3.6% 31.0%
LOAD_ATTR_INSTANCE_VALUE 34627008 3.6% 34.6% 0.7%
RESUME_QUICK 32247781 3.3% 37.9%
RETURN_VALUE 30371057 3.1% 41.1%
LOAD_METHOD_NO_DICT 30006603 3.1% 44.2%
LOAD_DEREF 25592799 2.7% 46.8%
LOAD_GLOBAL_BUILTIN 24306929 2.5% 49.4% 0.1%
LIST_APPEND 23443018 2.4% 51.8%
POP_JUMP_FORWARD_IF_FALSE 23172104 2.4% 54.2%
STORE_FAST 22286822 2.3% 56.5%
LOAD_GLOBAL_MODULE 17934215 1.9% 58.4% 0.1%
CALL_ADAPTIVE 16601257 1.7% 60.1%
LOAD_FAST__LOAD_FAST 15234421 1.6% 61.7%
PRECALL_ADAPTIVE 14413340 1.5% 63.2%
POP_TOP 14116541 1.5% 64.6%
LOAD_ATTR_ADAPTIVE 13540650 1.4% 66.0%
PRECALL_PYFUNC 13313500 1.4% 67.4% 0.0%
FORMAT_VALUE 12491236 1.3% 68.7%
LOAD_CONST__LOAD_FAST 12259442 1.3% 70.0%
LOAD_FAST__LOAD_CONST 11965153 1.2% 71.2%
CALL_PY_EXACT_ARGS 11645458 1.2% 72.4% 6.2%
CONTAINS_OP 10968145 1.1% 73.6%
STORE_FAST__STORE_FAST 10514008 1.1% 74.6%
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 10475137 1.1% 75.7% 1.0%
LOAD_ATTR_SLOT 10002245 1.0% 76.8% 0.0%
STORE_ATTR_INSTANCE_VALUE 8794946 0.9% 77.7% 1.1%
PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST 8557324 0.9% 78.6% 0.0%
BINARY_SUBSCR_TUPLE_INT 8192693 0.8% 79.4% 0.0%
POP_JUMP_FORWARD_IF_TRUE 8117474 0.8% 80.3%
LOAD_METHOD_WITH_VALUES 7624762 0.8% 81.1% 1.7%
PRECALL_BUILTIN_CLASS 7486510 0.8% 81.8% 0.0%
POP_JUMP_BACKWARD_IF_FALSE 7411451 0.8% 82.6%
MAP_ADD 6982242 0.7% 83.3%
BINARY_SUBSCR_LIST_INT 6780678 0.7% 84.0% 0.6%
UNPACK_SEQUENCE_TWO_TUPLE 6386218 0.7% 84.7%
BUILD_STRING 6270572 0.7% 85.3%
BINARY_SUBSCR_ADAPTIVE 6225444 0.6% 86.0%
BINARY_SUBSCR_DICT 5994107 0.6% 86.6%
POP_JUMP_FORWARD_IF_NONE 5791340 0.6% 87.2%
PRECALL_NO_KW_METHOD_DESCRIPTOR_O 5694766 0.6% 87.8% 0.5%
LOAD_ATTR_MODULE 5541705 0.6% 88.4% 0.1%
LOAD_METHOD_ADAPTIVE 5441547 0.6% 88.9%
COMPARE_OP_INT_JUMP 4943621 0.5% 89.4% 0.1%
BUILD_TUPLE 4859269 0.5% 89.9%
JUMP_FORWARD 4575390 0.5% 90.4%
SEND 4550709 0.5% 90.9%
POP_JUMP_FORWARD_IF_NOT_NONE 4178917 0.4% 91.3%
PRECALL_NO_KW_ISINSTANCE 4087450 0.4% 91.8%
NOP 4069687 0.4% 92.2%
UNPACK_SEQUENCE_TUPLE 3616438 0.4% 92.5%
KW_NAMES 3588110 0.4% 92.9%
GET_ITER 3436682 0.4% 93.3%
RETURN_GENERATOR 3209050 0.3% 93.6%
BUILD_LIST 2975101 0.3% 93.9%
GET_AWAITABLE 2916251 0.3% 94.2%
PRECALL_NO_KW_LEN 2896589 0.3% 94.5%
IS_OP 2484243 0.3% 94.8%
COMPARE_OP_ADAPTIVE 2402749 0.2% 95.0%
COMPARE_OP_STR_JUMP 2349630 0.2% 95.3% 0.0%
PUSH_NULL 2327249 0.2% 95.5%
PRECALL_NO_KW_LIST_APPEND 1982220 0.2% 95.7%
YIELD_VALUE 1814357 0.2% 95.9%
STORE_SUBSCR_DICT 1688929 0.2% 96.1%
BUILD_SLICE 1594319 0.2% 96.2%
PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 1589538 0.2% 96.4% 2.1%
JUMP_BACKWARD_NO_INTERRUPT 1572350 0.2% 96.6%
BINARY_OP_ADD_UNICODE 1532062 0.2% 96.7%
PRECALL_BOUND_METHOD 1464733 0.2% 96.9% 2.1%
PRECALL_NO_KW_STR_1 1442764 0.1% 97.0%
COPY 1413756 0.1% 97.2%
JUMP_IF_TRUE_OR_POP 1403632 0.1% 97.3%
BUILD_MAP 1339380 0.1% 97.5%
COPY_FREE_VARS 1305448 0.1% 97.6%
SWAP 1247129 0.1% 97.7%
BINARY_OP_ADD_INT 1145158 0.1% 97.8% 0.0%
MAKE_FUNCTION 1137414 0.1% 98.0%
PRECALL_NO_KW_BUILTIN_FAST 1095732 0.1% 98.1% 0.1%
PRECALL_NO_KW_TYPE_1 1078751 0.1% 98.2%
EXTENDED_ARG_QUICK 1060236 0.1% 98.3%
MAKE_CELL 984318 0.1% 98.4%
STORE_ATTR_SLOT 951212 0.1% 98.5% 0.1%
LOAD_CLOSURE 885027 0.1% 98.6%
PRECALL_NO_KW_BUILTIN_O 876570 0.1% 98.7% 0.4%
LOAD_ATTR_WITH_HINT 841955 0.1% 98.8% 4.4%
BINARY_OP_ADAPTIVE 825894 0.1% 98.9%
STORE_DEREF 816051 0.1% 98.9%
CALL_FUNCTION_EX 768158 0.1% 99.0%
CALL 758307 0.1% 99.1%
STORE_ATTR_ADAPTIVE 647848 0.1% 99.2%
DICT_MERGE 573085 0.1% 99.2%
JUMP_IF_FALSE_OR_POP 557284 0.1% 99.3%
CALL_PY_WITH_DEFAULTS 473871 0.0% 99.3% 0.0%
LOAD_METHOD 424109 0.0% 99.4%
BINARY_OP_SUBTRACT_INT 406681 0.0% 99.4%
PRECALL_BUILTIN_FAST_WITH_KEYWORDS 401785 0.0% 99.5% 5.7%
LOAD_METHOD_CLASS 367676 0.0% 99.5%
LOAD_METHOD_WITH_DICT 339171 0.0% 99.5% 83.8%
LOAD_ATTR 298852 0.0% 99.6%
STORE_SUBSCR_ADAPTIVE 282571 0.0% 99.6%
PRECALL 267302 0.0% 99.6%
PUSH_EXC_INFO 263420 0.0% 99.7%
POP_EXCEPT 263420 0.0% 99.7%
CHECK_EXC_MATCH 262907 0.0% 99.7%
LIST_EXTEND 199406 0.0% 99.7%
LIST_TO_TUPLE 198304 0.0% 99.7%
BEFORE_WITH 187099 0.0% 99.8%
BINARY_OP_SUBTRACT_FLOAT 148605 0.0% 99.8%
BEFORE_ASYNC_WITH 132966 0.0% 99.8%
BUILD_CONST_KEY_MAP 129154 0.0% 99.8%
LOAD_METHOD_MODULE 128850 0.0% 99.8% 0.1%
POP_JUMP_BACKWARD_IF_TRUE 124719 0.0% 99.8%
BINARY_OP_INPLACE_ADD_UNICODE 124108 0.0% 99.8%
STORE_ATTR_WITH_HINT 120821 0.0% 99.9% 2.9%
UNARY_NOT 119857 0.0% 99.9%
BINARY_SUBSCR_GETITEM 114764 0.0% 99.9% 0.0%
STORE_ATTR 109519 0.0% 99.9%
BINARY_OP_MULTIPLY_INT 108744 0.0% 99.9% 0.1%
UNPACK_SEQUENCE_LIST 86052 0.0% 99.9%
PRECALL_NO_KW_TUPLE_1 85095 0.0% 99.9%
RAISE_VARARGS 79841 0.0% 99.9%
BINARY_OP_ADD_FLOAT 74184 0.0% 99.9%
DELETE_SUBSCR 63939 0.0% 99.9%
RERAISE 63601 0.0% 100.0%
LOAD_GLOBAL 55783 0.0% 100.0%
BINARY_SUBSCR 48057 0.0% 100.0%
STORE_NAME 48025 0.0% 100.0%
GET_ANEXT 46566 0.0% 100.0%
LOAD_NAME 45032 0.0% 100.0%
ASYNC_GEN_WRAP 31044 0.0% 100.0%
RESUME 20007 0.0% 100.0%
UNARY_NEGATIVE 16373 0.0% 100.0%
LOAD_GLOBAL_ADAPTIVE 16137 0.0% 100.0%
GET_YIELD_FROM_ITER 15542 0.0% 100.0%
GET_AITER 15522 0.0% 100.0%
END_ASYNC_FOR 15522 0.0% 100.0%
EXTENDED_ARG 8615 0.0% 100.0%
COMPARE_OP 6950 0.0% 100.0%
IMPORT_NAME 6606 0.0% 100.0%
IMPORT_FROM 6250 0.0% 100.0%
STORE_SUBSCR_LIST_INT 4519 0.0% 100.0%
BINARY_OP 4177 0.0% 100.0%
SET_ADD 3354 0.0% 100.0%
JUMP_BACKWARD 2963 0.0% 100.0%
LOAD_BUILD_CLASS 2918 0.0% 100.0%
STORE_SUBSCR 2274 0.0% 100.0%
COMPARE_OP_FLOAT_JUMP 1736 0.0% 100.0% 6.4%
UNPACK_SEQUENCE 1734 0.0% 100.0%
BUILD_SET 756 0.0% 100.0%
UNARY_INVERT 696 0.0% 100.0%
DELETE_FAST 445 0.0% 100.0%
DICT_UPDATE 432 0.0% 100.0%
UNPACK_SEQUENCE_ADAPTIVE 391 0.0% 100.0%
BINARY_OP_MULTIPLY_FLOAT 292 0.0% 100.0%
SETUP_ANNOTATIONS 261 0.0% 100.0%
DELETE_NAME 241 0.0% 100.0%
WITH_EXCEPT_START 212 0.0% 100.0%
STORE_GLOBAL 193 0.0% 100.0%
IMPORT_STAR 157 0.0% 100.0%
POP_JUMP_BACKWARD_IF_NOT_NONE 130 0.0% 100.0%
SET_UPDATE 26 0.0% 100.0%
LOAD_CLASSDEREF 14 0.0% 100.0%
UNARY_POSITIVE 10 0.0% 100.0%
DELETE_ATTR 3 0.0% 100.0%

Pair counts

Pair counts for top 100 pairs
Pair Count Self Cumulative
JUMP_BACKWARD_QUICK FOR_ITER 34706159 3.6% 3.6%
LIST_APPEND JUMP_BACKWARD_QUICK 23442060 2.4% 6.0%
LOAD_FAST LOAD_ATTR_INSTANCE_VALUE 20504782 2.1% 8.2%
FOR_ITER STORE_FAST__LOAD_FAST 19293662 2.0% 10.2%
LOAD_GLOBAL_BUILTIN LOAD_FAST 16828379 1.7% 11.9%
RESUME_QUICK LOAD_FAST 15781801 1.6% 13.5%
FOR_ITER STORE_FAST 14201160 1.5% 15.0%
PRECALL_ADAPTIVE CALL_ADAPTIVE 13720950 1.4% 16.4%
LOAD_FAST LOAD_METHOD_NO_DICT 12444225 1.3% 17.7%
LOAD_METHOD_NO_DICT LOAD_CONST 11930215 1.2% 19.0%
POP_JUMP_FORWARD_IF_FALSE LOAD_FAST 11760602 1.2% 20.2%
LOAD_DEREF LOAD_ATTR_INSTANCE_VALUE 10702186 1.1% 21.3%
PRECALL_PYFUNC CALL_PY_EXACT_ARGS 10613002 1.1% 22.4%
LOAD_FAST LOAD_ATTR_SLOT 9380299 1.0% 23.4%
CALL_PY_EXACT_ARGS RESUME_QUICK 9170604 1.0% 24.3%
LOAD_METHOD_NO_DICT PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 9078910 0.9% 25.3%
LOAD_CONST RETURN_VALUE 8999388 0.9% 26.2%
LOAD_CONST LOAD_CONST 8183054 0.8% 27.0%
LOAD_FAST LOAD_ATTR_ADAPTIVE 7792314 0.8% 27.8%
STORE_FAST LOAD_DEREF 7220517 0.7% 28.6%
STORE_FAST LOAD_GLOBAL_BUILTIN 7131323 0.7% 29.3%
LOAD_FAST LOAD_DEREF 7004117 0.7% 30.1%
MAP_ADD JUMP_BACKWARD_QUICK 6974476 0.7% 30.8%
STORE_FAST__LOAD_FAST LOAD_DEREF 6643555 0.7% 31.5%
LOAD_CONST PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST 6629988 0.7% 32.2%
STORE_FAST__LOAD_FAST LIST_APPEND 6584426 0.7% 32.8%
CONTAINS_OP POP_JUMP_BACKWARD_IF_FALSE 6572006 0.7% 33.5%
LOAD_ATTR_INSTANCE_VALUE CONTAINS_OP 6495601 0.7% 34.2%
LOAD_CONST BINARY_SUBSCR_LIST_INT 6399291 0.7% 34.9%
UNPACK_SEQUENCE_TWO_TUPLE STORE_FAST__STORE_FAST 6381582 0.7% 35.5%
PRECALL_BUILTIN_CLASS LOAD_CONST 6350469 0.7% 36.2%
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS PRECALL_BUILTIN_CLASS 6266194 0.6% 36.8%
FORMAT_VALUE BUILD_STRING 6265193 0.6% 37.5%
LOAD_CONST__LOAD_FAST LOAD_METHOD_NO_DICT 6247711 0.6% 38.1%
FORMAT_VALUE LOAD_CONST__LOAD_FAST 6219131 0.6% 38.8%
BUILD_STRING LIST_APPEND 6217066 0.6% 39.4%
LOAD_DEREF FORMAT_VALUE 6216512 0.6% 40.1%
PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST FORMAT_VALUE 6216426 0.6% 40.7%
BINARY_SUBSCR_LIST_INT LIST_APPEND 6216426 0.6% 41.4%
LOAD_ATTR_SLOT LOAD_FAST 5877423 0.6% 42.0%
FOR_ITER UNPACK_SEQUENCE_TWO_TUPLE 5869497 0.6% 42.6%
LOAD_ATTR_INSTANCE_VALUE LOAD_FAST 5755260 0.6% 43.2%
LOAD_GLOBAL_MODULE LOAD_ATTR_MODULE 5536612 0.6% 43.7%
LOAD_METHOD_NO_DICT LOAD_FAST 5424774 0.6% 44.3%
STORE_FAST__STORE_FAST LOAD_FAST 5081694 0.5% 44.8%
LOAD_CONST BINARY_SUBSCR_TUPLE_INT 4920908 0.5% 45.3%
STORE_FAST__LOAD_FAST LOAD_CONST 4835678 0.5% 45.8%
LOAD_FAST PRECALL_PYFUNC 4811651 0.5% 46.3%
LOAD_FAST RETURN_VALUE 4775345 0.5% 46.8%
STORE_FAST__LOAD_FAST LOAD_METHOD_NO_DICT 4276628 0.4% 47.3%
RETURN_VALUE POP_TOP 4217343 0.4% 47.7%
POP_JUMP_FORWARD_IF_TRUE LOAD_FAST 4200835 0.4% 48.2%
LOAD_FAST LOAD_METHOD_WITH_VALUES 4162408 0.4% 48.6%
CONTAINS_OP POP_JUMP_FORWARD_IF_FALSE 4046957 0.4% 49.0%
RESUME_QUICK LOAD_GLOBAL_BUILTIN 3738381 0.4% 49.4%
LOAD_DEREF LOAD_FAST 3719492 0.4% 49.8%
POP_JUMP_BACKWARD_IF_FALSE FOR_ITER 3714647 0.4% 50.2%
UNPACK_SEQUENCE_TUPLE STORE_FAST__STORE_FAST 3616347 0.4% 50.5%
LOAD_ATTR_INSTANCE_VALUE POP_JUMP_FORWARD_IF_FALSE 3562294 0.4% 50.9%
POP_TOP LOAD_FAST 3501986 0.4% 51.3%
LOAD_ATTR_INSTANCE_VALUE LOAD_METHOD_NO_DICT 3484841 0.4% 51.6%
PRECALL_NO_KW_METHOD_DESCRIPTOR_O UNPACK_SEQUENCE_TUPLE 3471351 0.4% 52.0%
POP_JUMP_FORWARD_IF_NONE LOAD_FAST 3427048 0.4% 52.3%
LOAD_FAST BINARY_SUBSCR_ADAPTIVE 3387769 0.4% 52.7%
STORE_FAST__STORE_FAST STORE_FAST__LOAD_FAST 3386280 0.4% 53.0%
LOAD_FAST BINARY_SUBSCR_DICT 3384535 0.4% 53.4%
CALL_ADAPTIVE STORE_FAST__LOAD_FAST 3354093 0.3% 53.7%
RESUME_QUICK LOAD_FAST__LOAD_CONST 3344166 0.3% 54.1%
LOAD_FAST PRECALL_ADAPTIVE 3342074 0.3% 54.4%
POP_JUMP_FORWARD_IF_FALSE LOAD_CONST 3340696 0.3% 54.8%
LOAD_METHOD_WITH_VALUES LOAD_FAST 3288784 0.3% 55.1%
LOAD_FAST__LOAD_CONST BINARY_SUBSCR_TUPLE_INT 3271285 0.3% 55.5%
LOAD_FAST LOAD_METHOD_ADAPTIVE 3259914 0.3% 55.8%
POP_TOP RESUME_QUICK 3208004 0.3% 56.1%
LOAD_FAST LOAD_GLOBAL_BUILTIN 3173390 0.3% 56.5%
BINARY_SUBSCR_TUPLE_INT RETURN_VALUE 3167195 0.3% 56.8%
LOAD_CONST PRECALL_NO_KW_METHOD_DESCRIPTOR_O 3113806 0.3% 57.1%
BINARY_SUBSCR_ADAPTIVE MAP_ADD 3048345 0.3% 57.4%
LOAD_FAST__LOAD_FAST STORE_ATTR_INSTANCE_VALUE 3036626 0.3% 57.7%
PRECALL_NO_KW_ISINSTANCE POP_JUMP_FORWARD_IF_FALSE 3012359 0.3% 58.1%
POP_TOP LOAD_CONST 2986913 0.3% 58.4%
POP_JUMP_BACKWARD_IF_FALSE LOAD_FAST 2980321 0.3% 58.7%
LOAD_CONST SEND 2978359 0.3% 59.0%
STORE_FAST LOAD_GLOBAL_MODULE 2968473 0.3% 59.3%
BINARY_SUBSCR_TUPLE_INT LIST_APPEND 2928274 0.3% 59.6%
BINARY_SUBSCR_DICT MAP_ADD 2928274 0.3% 59.9%
GET_AWAITABLE LOAD_CONST 2916251 0.3% 60.2%
LOAD_GLOBAL_BUILTIN PRECALL_NO_KW_ISINSTANCE 2913483 0.3% 60.5%
STORE_FAST__LOAD_FAST POP_JUMP_FORWARD_IF_FALSE 2838980 0.3% 60.8%
LOAD_FAST LOAD_GLOBAL_MODULE 2831964 0.3% 61.1%
LOAD_CONST COMPARE_OP_INT_JUMP 2766312 0.3% 61.4%
STORE_ATTR_INSTANCE_VALUE LOAD_FAST 2713770 0.3% 61.7%
LOAD_METHOD_ADAPTIVE LOAD_FAST 2663958 0.3% 61.9%
LOAD_CONST__LOAD_FAST STORE_ATTR_INSTANCE_VALUE 2609498 0.3% 62.2%
RESUME_QUICK LOAD_GLOBAL_MODULE 2595405 0.3% 62.5%
LOAD_FAST STORE_ATTR_INSTANCE_VALUE 2510197 0.3% 62.7%
LOAD_FAST PRECALL_NO_KW_LEN 2471536 0.3% 63.0%
LOAD_ATTR_ADAPTIVE LOAD_CONST 2465113 0.3% 63.3%
GET_ITER FOR_ITER 2424449 0.3% 63.5%
LOAD_GLOBAL_MODULE LOAD_FAST 2422660 0.3% 63.8%

Predecessor/Successor Pairs

Top 3 predecessors and successors of each opcode

ASYNC_GEN_WRAP

Successors and predecessors for ASYNC_GEN_WRAP
Predecessors Count Percentage
LOAD_FAST 15522 50.0%
LOAD_CONST 15522 50.0%
Successors Count Percentage
YIELD_VALUE 31044 100.0%

BEFORE_ASYNC_WITH

Successors and predecessors for BEFORE_ASYNC_WITH
Predecessors Count Percentage
RETURN_VALUE 117442 88.3%
CALL_ADAPTIVE 15518 11.7%
CALL 6 0.0%
Successors Count Percentage
GET_AWAITABLE 132966 100.0%

BEFORE_WITH

Successors and predecessors for BEFORE_WITH
Predecessors Count Percentage
CALL_ADAPTIVE 64802 34.6%
LOAD_ATTR_INSTANCE_VALUE 62641 33.5%
LOAD_FAST 58679 31.4%
Successors Count Percentage
POP_TOP 186244 99.5%
STORE_FAST__LOAD_FAST 811 0.4%
STORE_FAST 43 0.0%

BINARY_OP

Successors and predecessors for BINARY_OP
Predecessors Count Percentage
LOAD_CONST 1268 30.4%
LOAD_FAST 901 21.6%
CALL 442 10.6%
Successors Count Percentage
STORE_FAST 904 21.6%
LOAD_FAST 447 10.7%
PRECALL 425 10.2%

BINARY_OP_ADAPTIVE

Successors and predecessors for BINARY_OP_ADAPTIVE
Predecessors Count Percentage
CALL_ADAPTIVE 133021 16.1%
LOAD_FAST 128609 15.6%
BINARY_OP_ADAPTIVE 115485 14.0%
Successors Count Percentage
RETURN_VALUE 212520 25.7%
PUSH_EXC_INFO 117345 14.2%
BINARY_OP_ADAPTIVE 115485 14.0%

BINARY_OP_ADD_FLOAT

Successors and predecessors for BINARY_OP_ADD_FLOAT
Predecessors Count Percentage
LOAD_FAST 74182 100.0%
BINARY_OP_ADAPTIVE 2 0.0%
Successors Count Percentage
STORE_FAST__LOAD_FAST 58669 79.1%
RETURN_VALUE 15515 20.9%

BINARY_OP_ADD_INT

Successors and predecessors for BINARY_OP_ADD_INT
Predecessors Count Percentage
LOAD_CONST 530504 46.3%
LOAD_FAST 211328 18.5%
PRECALL_NO_KW_LEN 177659 15.5%
Successors Count Percentage
SWAP 405140 35.4%
STORE_DEREF 390327 34.1%
BUILD_SLICE 117995 10.3%

BINARY_OP_ADD_UNICODE

Successors and predecessors for BINARY_OP_ADD_UNICODE
Predecessors Count Percentage
LOAD_FAST 940921 61.4%
PRECALL_NO_KW_STR_1 293856 19.2%
LOAD_ATTR_ADAPTIVE 133776 8.7%
Successors Count Percentage
RETURN_VALUE 528897 34.5%
LOAD_FAST 475548 31.0%
LOAD_GLOBAL_BUILTIN 235028 15.3%

BINARY_OP_INPLACE_ADD_UNICODE

Successors and predecessors for BINARY_OP_INPLACE_ADD_UNICODE
Predecessors Count Percentage
BINARY_OP_ADD_UNICODE 121099 97.6%
LOAD_FAST__LOAD_FAST 1076 0.9%
BINARY_SUBSCR_ADAPTIVE 792 0.6%
Successors Count Percentage
LOAD_FAST__LOAD_FAST 60693 48.9%
LOAD_FAST 59165 47.7%
JUMP_BACKWARD_QUICK 3292 2.7%

BINARY_OP_MULTIPLY_FLOAT

Successors and predecessors for BINARY_OP_MULTIPLY_FLOAT
Predecessors Count Percentage
LOAD_DEREF 280 95.9%
LOAD_FAST__LOAD_CONST 8 2.7%
BINARY_OP_ADAPTIVE 4 1.4%
Successors Count Percentage
PRECALL_NO_KW_BUILTIN_O 280 95.9%
STORE_FAST 10 3.4%
PRECALL_ADAPTIVE 2 0.7%

BINARY_OP_MULTIPLY_INT

Successors and predecessors for BINARY_OP_MULTIPLY_INT
Predecessors Count Percentage
LOAD_FAST__LOAD_CONST 59570 54.8%
LOAD_ATTR_INSTANCE_VALUE 46766 43.0%
BINARY_SUBSCR_TUPLE_INT 908 0.8%
Successors Count Percentage
LOAD_FAST 59365 54.6%
COMPARE_OP_INT_JUMP 46766 43.0%
PRECALL_ADAPTIVE 948 0.9%

BINARY_OP_SUBTRACT_FLOAT

Successors and predecessors for BINARY_OP_SUBTRACT_FLOAT
Predecessors Count Percentage
LOAD_FAST 58862 39.6%
LOAD_FAST__LOAD_FAST 58660 39.5%
LOAD_GLOBAL_MODULE 15638 10.5%
Successors Count Percentage
LOAD_FAST 74030 49.8%
PRECALL_PYFUNC 58862 39.6%
LOAD_CONST 15711 10.6%

BINARY_OP_SUBTRACT_INT

Successors and predecessors for BINARY_OP_SUBTRACT_INT
Predecessors Count Percentage
PRECALL_NO_KW_LEN 220479 54.2%
LOAD_FAST 83893 20.6%
LOAD_FAST__LOAD_CONST 63297 15.6%
Successors Count Percentage
SWAP 135060 33.2%
STORE_FAST__LOAD_FAST 122437 30.1%
BINARY_OP_ADAPTIVE 98243 24.2%

BINARY_SUBSCR

Successors and predecessors for BINARY_SUBSCR
Predecessors Count Percentage
BINARY_SUBSCR_LIST_INT 38808 80.8%
LOAD_NAME 2356 4.9%
LOAD_CONST 2002 4.2%
Successors Count Percentage
LOAD_CONST 39938 85.6%
BUILD_TUPLE 1120 2.4%
STORE_FAST 764 1.6%

BINARY_SUBSCR_ADAPTIVE

Successors and predecessors for BINARY_SUBSCR_ADAPTIVE
Predecessors Count Percentage
LOAD_FAST 3387769 54.4%
BUILD_SLICE 1545776 24.8%
LOAD_FAST__LOAD_CONST 1092467 17.5%
Successors Count Percentage
MAP_ADD 3048345 49.0%
LOAD_FAST 784710 12.6%
LOAD_CONST 570534 9.2%

BINARY_SUBSCR_DICT

Successors and predecessors for BINARY_SUBSCR_DICT
Predecessors Count Percentage
LOAD_FAST 3384535 56.5%
LOAD_FAST__LOAD_CONST 1083097 18.1%
LOAD_DEREF 571998 9.5%
Successors Count Percentage
MAP_ADD 2928274 48.9%
LOAD_METHOD_NO_DICT 1094409 18.3%
STORE_SUBSCR_DICT 442635 7.4%

BINARY_SUBSCR_GETITEM

Successors and predecessors for BINARY_SUBSCR_GETITEM
Predecessors Count Percentage
LOAD_FAST__LOAD_FAST 74647 65.0%
LOAD_CONST 33020 28.8%
LOAD_FAST__LOAD_CONST 3454 3.0%
Successors Count Percentage
RESUME_QUICK 114726 100.0%
RESUME 20 0.0%
MAKE_CELL 12 0.0%

BINARY_SUBSCR_LIST_INT

Successors and predecessors for BINARY_SUBSCR_LIST_INT
Predecessors Count Percentage
LOAD_CONST 6399291 94.4%
LOAD_FAST__LOAD_CONST 326274 4.8%
RETURN_VALUE 15514 0.2%
Successors Count Percentage
LIST_APPEND 6216426 91.7%
LOAD_METHOD_NO_DICT 277233 4.1%
PRECALL_NO_KW_LEN 138583 2.0%

BINARY_SUBSCR_TUPLE_INT

Successors and predecessors for BINARY_SUBSCR_TUPLE_INT
Predecessors Count Percentage
LOAD_CONST 4920908 60.1%
LOAD_FAST__LOAD_CONST 3271285 39.9%
LOAD_FAST 248 0.0%
Successors Count Percentage
RETURN_VALUE 3167195 38.7%
LIST_APPEND 2928274 35.7%
STORE_FAST__LOAD_FAST 974874 11.9%

BUILD_CONST_KEY_MAP

Successors and predecessors for BUILD_CONST_KEY_MAP
Predecessors Count Percentage
LOAD_CONST 112808 87.3%
LOAD_FAST__LOAD_CONST 16346 12.7%
Successors Count Percentage
STORE_FAST__LOAD_FAST 32089 24.8%
STORE_FAST 32018 24.8%
PRECALL_PYFUNC 31028 24.0%

BUILD_LIST

Successors and predecessors for BUILD_LIST
Predecessors Count Percentage
RESUME_QUICK 937912 31.5%
LOAD_FAST 609236 20.5%
STORE_FAST 260806 8.8%
Successors Count Percentage
LOAD_FAST 1301150 43.7%
LOAD_FAST__LOAD_FAST 442368 14.9%
STORE_FAST__LOAD_FAST 422999 14.2%

BUILD_MAP

Successors and predecessors for BUILD_MAP
Predecessors Count Percentage
LOAD_FAST 207929 15.5%
LIST_TO_TUPLE 177587 13.3%
STORE_ATTR_SLOT 176027 13.1%
Successors Count Percentage
LOAD_FAST 870100 65.0%
STORE_FAST__LOAD_FAST 184369 13.8%
STORE_FAST 156308 11.7%

BUILD_SET

Successors and predecessors for BUILD_SET
Predecessors Count Percentage
RESUME_QUICK 357 47.2%
LOAD_ATTR_ADAPTIVE 187 24.7%
LOAD_CONST 68 9.0%
Successors Count Percentage
LOAD_FAST 401 53.0%
CONTAINS_OP 202 26.7%
BINARY_OP_ADAPTIVE 85 11.2%

BUILD_SLICE

Successors and predecessors for BUILD_SLICE
Predecessors Count Percentage
LOAD_CONST 1176351 73.8%
LOAD_FAST 169330 10.6%
BINARY_OP_ADD_INT 117995 7.4%
Successors Count Percentage
BINARY_SUBSCR_ADAPTIVE 1545776 97.0%
DELETE_SUBSCR 46780 2.9%
BINARY_SUBSCR 891 0.1%

BUILD_STRING

Successors and predecessors for BUILD_STRING
Predecessors Count Percentage
FORMAT_VALUE 6265193 99.9%
LOAD_CONST 5379 0.1%
Successors Count Percentage
LIST_APPEND 6217066 99.1%
PRECALL_BOUND_METHOD 31034 0.5%
LOAD_CONST 15680 0.3%

BUILD_TUPLE

Successors and predecessors for BUILD_TUPLE
Predecessors Count Percentage
LOAD_FAST__LOAD_FAST 1845747 38.0%
LOAD_ATTR_SLOT 897670 18.5%
LOAD_CLOSURE 411631 8.5%
Successors Count Percentage
RETURN_VALUE 1464349 30.1%
LOAD_CONST 474921 9.8%
PRECALL_NO_KW_BUILTIN_O 400501 8.2%

CALL

Successors and predecessors for CALL
Predecessors Count Percentage
CALL_PY_EXACT_ARGS 716527 94.5%
PRECALL 41698 5.5%
CALL_PY_WITH_DEFAULTS 82 0.0%
Successors Count Percentage
RESUME_QUICK 408387 53.9%
COPY_FREE_VARS 253509 33.4%
RETURN_GENERATOR 61163 8.1%

CALL_ADAPTIVE

Successors and predecessors for CALL_ADAPTIVE
Predecessors Count Percentage
PRECALL_ADAPTIVE 13720950 82.7%
PRECALL_PYFUNC 2418286 14.6%
PRECALL 225543 1.4%
Successors Count Percentage
STORE_FAST__LOAD_FAST 3354093 20.2%
RESUME_QUICK 1929784 11.6%
POP_TOP 1755434 10.6%

CALL_FUNCTION_EX

Successors and predecessors for CALL_FUNCTION_EX
Predecessors Count Percentage
DICT_MERGE 573085 74.6%
LOAD_FAST 140444 18.3%
RETURN_GENERATOR 31044 4.0%
Successors Count Percentage
GET_AWAITABLE 378753 49.3%
RETURN_VALUE 76158 9.9%
STORE_FAST__LOAD_FAST 66223 8.6%

CALL_PY_EXACT_ARGS

Successors and predecessors for CALL_PY_EXACT_ARGS
Predecessors Count Percentage
PRECALL_PYFUNC 10613002 91.1%
PRECALL_BOUND_METHOD 1017481 8.7%
CALL_ADAPTIVE 14863 0.1%
Successors Count Percentage
RESUME_QUICK 9170604 78.7%
RETURN_GENERATOR 1344655 11.5%
CALL 716527 6.2%

CALL_PY_WITH_DEFAULTS

Successors and predecessors for CALL_PY_WITH_DEFAULTS
Predecessors Count Percentage
PRECALL_PYFUNC 282147 59.5%
PRECALL_BOUND_METHOD 191614 40.4%
CALL_ADAPTIVE 110 0.0%
Successors Count Percentage
RESUME_QUICK 341928 72.2%
RETURN_GENERATOR 131510 27.8%
MAKE_CELL 192 0.0%

CHECK_EXC_MATCH

Successors and predecessors for CHECK_EXC_MATCH
Predecessors Count Percentage
LOAD_GLOBAL_BUILTIN 258303 98.2%
BUILD_TUPLE 3190 1.2%
LOAD_GLOBAL 856 0.3%
Successors Count Percentage
POP_JUMP_FORWARD_IF_FALSE 262907 100.0%

COMPARE_OP

Successors and predecessors for COMPARE_OP
Predecessors Count Percentage
LOAD_CONST 2527 36.4%
COMPARE_OP_INT_JUMP 2519 36.2%
LOAD_ATTR 406 5.8%
Successors Count Percentage
POP_JUMP_FORWARD_IF_FALSE 5934 85.4%
POP_JUMP_FORWARD_IF_TRUE 434 6.2%
POP_JUMP_BACKWARD_IF_FALSE 130 1.9%

COMPARE_OP_ADAPTIVE

Successors and predecessors for COMPARE_OP_ADAPTIVE
Predecessors Count Percentage
LOAD_CONST 884204 36.8%
LOAD_ATTR_ADAPTIVE 557939 23.2%
BUILD_TUPLE 258103 10.7%
Successors Count Percentage
POP_JUMP_FORWARD_IF_FALSE 1569451 65.3%
RETURN_VALUE 356521 14.8%
POP_JUMP_FORWARD_IF_TRUE 178009 7.4%

COMPARE_OP_FLOAT_JUMP

Successors and predecessors for COMPARE_OP_FLOAT_JUMP
Predecessors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 1391 80.1%
LOAD_ATTR_WITH_HINT 306 17.6%
LOAD_CONST 24 1.4%
Successors Count Percentage
LOAD_GLOBAL_MODULE 1281 73.8%
LOAD_FAST 288 16.6%
COMPARE_OP 111 6.4%

COMPARE_OP_INT_JUMP

Successors and predecessors for COMPARE_OP_INT_JUMP
Predecessors Count Percentage
LOAD_CONST 2766312 56.0%
BINARY_SUBSCR_TUPLE_INT 781001 15.8%
COPY 411041 8.3%
Successors Count Percentage
LOAD_FAST 1641746 33.2%
LOAD_CONST 834445 16.9%
FOR_ITER 660931 13.4%

COMPARE_OP_STR_JUMP

Successors and predecessors for COMPARE_OP_STR_JUMP
Predecessors Count Percentage
LOAD_CONST 1179378 50.2%
LOAD_FAST__LOAD_CONST 909899 38.7%
LOAD_FAST 134424 5.7%
Successors Count Percentage
LOAD_FAST__LOAD_CONST 831600 35.4%
LOAD_FAST 777242 33.1%
LOAD_GLOBAL_BUILTIN 471182 20.1%

CONTAINS_OP

Successors and predecessors for CONTAINS_OP
Predecessors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 6495601 59.2%
LOAD_CONST__LOAD_FAST 1325137 12.1%
LOAD_FAST 1264767 11.5%
Successors Count Percentage
POP_JUMP_BACKWARD_IF_FALSE 6572006 59.9%
POP_JUMP_FORWARD_IF_FALSE 4046957 36.9%
EXTENDED_ARG_QUICK 123710 1.1%

COPY

Successors and predecessors for COPY
Predecessors Count Percentage
LOAD_FAST 415729 29.4%
SWAP 413031 29.2%
LOAD_CONST 287147 20.3%
Successors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 537889 38.0%
COMPARE_OP_INT_JUMP 411041 29.1%
STORE_FAST__STORE_FAST 287404 20.3%

COPY_FREE_VARS

Successors and predecessors for COPY_FREE_VARS
Predecessors Count Percentage
CALL_ADAPTIVE 345632 45.6%
CALL 253509 33.5%
CALL_PY_EXACT_ARGS 158057 20.9%
Successors Count Percentage
RESUME_QUICK 907927 69.5%
RETURN_GENERATOR 395105 30.3%
RESUME 1484 0.1%

DELETE_ATTR

Successors and predecessors for DELETE_ATTR
Predecessors Count Percentage
LOAD_FAST 3 100.0%
Successors Count Percentage
LOAD_GLOBAL 2 66.7%
LOAD_FAST 1 33.3%

DELETE_FAST

Successors and predecessors for DELETE_FAST
Predecessors Count Percentage
STORE_FAST 445 100.0%
Successors Count Percentage
RERAISE 132 29.7%
JUMP_FORWARD 124 27.9%
LOAD_CONST 75 16.9%

DELETE_NAME

Successors and predecessors for DELETE_NAME
Predecessors Count Percentage
DELETE_NAME 138 57.3%
STORE_NAME 52 21.6%
FOR_ITER 25 10.4%
Successors Count Percentage
DELETE_NAME 138 57.3%
LOAD_CONST 62 25.7%
PUSH_NULL 13 5.4%

DELETE_SUBSCR

Successors and predecessors for DELETE_SUBSCR
Predecessors Count Percentage
BUILD_SLICE 46780 73.2%
LOAD_FAST 17141 26.8%
LOAD_CONST 16 0.0%
Successors Count Percentage
LOAD_FAST 47037 73.6%
LOAD_CONST 15806 24.7%
LOAD_GLOBAL_MODULE 1012 1.6%

DICT_MERGE

Successors and predecessors for DICT_MERGE
Predecessors Count Percentage
LOAD_FAST 572701 99.9%
CALL_ADAPTIVE 255 0.0%
LOAD_ATTR_INSTANCE_VALUE 91 0.0%
Successors Count Percentage
CALL_FUNCTION_EX 573085 100.0%

DICT_UPDATE

Successors and predecessors for DICT_UPDATE
Predecessors Count Percentage
MAP_ADD 395 91.4%
BUILD_CONST_KEY_MAP 31 7.2%
LOAD_FAST 2 0.5%
Successors Count Percentage
BUILD_MAP 374 86.6%
STORE_NAME 34 7.9%
LOAD_CONST 9 2.1%

END_ASYNC_FOR

Successors and predecessors for END_ASYNC_FOR
Predecessors Count Percentage
SEND 15522 100.0%
Successors Count Percentage
LOAD_CONST 15522 100.0%

EXTENDED_ARG

Successors and predecessors for EXTENDED_ARG
Predecessors Count Percentage
MAP_ADD 4283 49.7%
LOAD_CONST 3289 38.2%
BUILD_MAP 265 3.1%
Successors Count Percentage
LOAD_CONST 8153 94.6%
POP_JUMP_FORWARD_IF_FALSE 161 1.9%
FOR_ITER 139 1.6%

EXTENDED_ARG_QUICK

Successors and predecessors for EXTENDED_ARG_QUICK
Predecessors Count Percentage
JUMP_BACKWARD_QUICK 214808 20.3%
LOAD_FAST 176371 16.6%
GET_ITER 145672 13.7%
Successors Count Percentage
FOR_ITER 360492 34.0%
POP_JUMP_FORWARD_IF_TRUE 222577 21.0%
JUMP_BACKWARD_QUICK 217299 20.5%

FORMAT_VALUE

Successors and predecessors for FORMAT_VALUE
Predecessors Count Percentage
LOAD_DEREF 6216512 49.8%
PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST 6216426 49.8%
LOAD_CONST__LOAD_FAST 50138 0.4%
Successors Count Percentage
BUILD_STRING 6265193 50.2%
LOAD_CONST__LOAD_FAST 6219131 49.8%
LOAD_CONST 5657 0.0%

FOR_ITER

Successors and predecessors for FOR_ITER
Predecessors Count Percentage
JUMP_BACKWARD_QUICK 34706159 81.2%
POP_JUMP_BACKWARD_IF_FALSE 3714647 8.7%
GET_ITER 2424449 5.7%
Successors Count Percentage
STORE_FAST__LOAD_FAST 19293662 45.1%
STORE_FAST 14201160 33.2%
UNPACK_SEQUENCE_TWO_TUPLE 5869497 13.7%

GET_AITER

Successors and predecessors for GET_AITER
Predecessors Count Percentage
RETURN_GENERATOR 15522 100.0%
Successors Count Percentage
GET_ANEXT 15522 100.0%

GET_ANEXT

Successors and predecessors for GET_ANEXT
Predecessors Count Percentage
JUMP_BACKWARD_QUICK 31039 66.7%
GET_AITER 15522 33.3%
JUMP_BACKWARD 5 0.0%
Successors Count Percentage
LOAD_CONST 46566 100.0%

GET_AWAITABLE

Successors and predecessors for GET_AWAITABLE
Predecessors Count Percentage
RETURN_GENERATOR 1698660 58.2%
CALL_ADAPTIVE 389901 13.4%
CALL_FUNCTION_EX 378753 13.0%
Successors Count Percentage
LOAD_CONST 2916251 100.0%

GET_ITER

Successors and predecessors for GET_ITER
Predecessors Count Percentage
LOAD_FAST 1042869 30.3%
STORE_FAST__LOAD_FAST 474573 13.8%
LOAD_ATTR_INSTANCE_VALUE 420763 12.2%
Successors Count Percentage
FOR_ITER 2424449 70.5%
PRECALL_PYFUNC 865249 25.2%
EXTENDED_ARG_QUICK 145672 4.2%

GET_YIELD_FROM_ITER

Successors and predecessors for GET_YIELD_FROM_ITER
Predecessors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 15518 99.8%
LOAD_ATTR_SLOT 13 0.1%
LOAD_ATTR 5 0.0%
Successors Count Percentage
LOAD_CONST 15542 100.0%

IMPORT_FROM

Successors and predecessors for IMPORT_FROM
Predecessors Count Percentage
STORE_NAME 3291 52.7%
IMPORT_NAME 2936 47.0%
POP_TOP 15 0.2%
Successors Count Percentage
STORE_NAME 6123 98.0%
STORE_FAST 105 1.7%
SWAP 15 0.2%

IMPORT_NAME

Successors and predecessors for IMPORT_NAME
Predecessors Count Percentage
LOAD_CONST 6606 100.0%
Successors Count Percentage
IMPORT_FROM 2936 44.4%
STORE_NAME 2030 30.7%
STORE_FAST__LOAD_FAST 1359 20.6%

IMPORT_STAR

Successors and predecessors for IMPORT_STAR
Predecessors Count Percentage
IMPORT_NAME 157 100.0%
Successors Count Percentage
LOAD_CONST 122 77.7%
PUSH_NULL 10 6.4%
LOAD_NAME 9 5.7%

IS_OP

Successors and predecessors for IS_OP
Predecessors Count Percentage
LOAD_CONST 570790 23.0%
LOAD_FAST 483641 19.5%
LOAD_FAST__LOAD_FAST 389332 15.7%
Successors Count Percentage
POP_JUMP_FORWARD_IF_FALSE 1883381 75.8%
JUMP_IF_TRUE_OR_POP 294435 11.9%
JUMP_IF_FALSE_OR_POP 119233 4.8%

JUMP_BACKWARD

Successors and predecessors for JUMP_BACKWARD
Predecessors Count Percentage
POP_TOP 901 30.4%
LIST_APPEND 803 27.1%
POP_JUMP_FORWARD_IF_FALSE 289 9.8%
Successors Count Percentage
FOR_ITER 2824 95.3%
EXTENDED_ARG 56 1.9%
LOAD_FAST 37 1.2%

JUMP_BACKWARD_NO_INTERRUPT

Successors and predecessors for JUMP_BACKWARD_NO_INTERRUPT
Predecessors Count Percentage
RESUME_QUICK 1572156 100.0%
RESUME 194 0.0%
Successors Count Percentage
SEND 1572350 100.0%

JUMP_BACKWARD_QUICK

Successors and predecessors for JUMP_BACKWARD_QUICK
Predecessors Count Percentage
LIST_APPEND 23442060 66.9%
MAP_ADD 6974476 19.9%
PRECALL_NO_KW_LIST_APPEND 1410424 4.0%
Successors Count Percentage
FOR_ITER 34706159 99.0%
EXTENDED_ARG_QUICK 214808 0.6%
LOAD_FAST 64411 0.2%

JUMP_FORWARD

Successors and predecessors for JUMP_FORWARD
Predecessors Count Percentage
STORE_FAST 1499632 32.8%
POP_TOP 848808 18.6%
LOAD_CONST 469611 10.3%
Successors Count Percentage
LOAD_FAST 1774784 38.8%
STORE_FAST__LOAD_FAST 692438 15.1%
LOAD_CONST__LOAD_FAST 509781 11.1%

JUMP_IF_FALSE_OR_POP

Successors and predecessors for JUMP_IF_FALSE_OR_POP
Predecessors Count Percentage
PRECALL_NO_KW_BUILTIN_FAST 255012 45.8%
IS_OP 119233 21.4%
CONTAINS_OP 74367 13.3%
Successors Count Percentage
RETURN_VALUE 353508 63.4%
LOAD_FAST 118529 21.3%
LOAD_FAST__LOAD_FAST 58669 10.5%

JUMP_IF_TRUE_OR_POP

Successors and predecessors for JUMP_IF_TRUE_OR_POP
Predecessors Count Percentage
LOAD_ATTR_ADAPTIVE 414752 29.5%
IS_OP 294435 21.0%
LOAD_ATTR_INSTANCE_VALUE 238527 17.0%
Successors Count Percentage
LOAD_FAST 530932 37.8%
RETURN_VALUE 384167 27.4%
LOAD_GLOBAL_BUILTIN 236466 16.8%

KW_NAMES

Successors and predecessors for KW_NAMES
Predecessors Count Percentage
LOAD_FAST 1840027 51.3%
LOAD_FAST__LOAD_FAST 616121 17.2%
LOAD_CONST 483934 13.5%
Successors Count Percentage
PRECALL_ADAPTIVE 1879943 52.4%
PRECALL_PYFUNC 1466927 40.9%
PRECALL_BOUND_METHOD 137065 3.8%

LIST_APPEND

Successors and predecessors for LIST_APPEND
Predecessors Count Percentage
STORE_FAST__LOAD_FAST 6584426 28.1%
BUILD_STRING 6217066 26.5%
BINARY_SUBSCR_LIST_INT 6216426 26.5%
Successors Count Percentage
JUMP_BACKWARD_QUICK 23442060 100.0%
JUMP_BACKWARD 803 0.0%
PUSH_NULL 99 0.0%

LIST_EXTEND

Successors and predecessors for LIST_EXTEND
Predecessors Count Percentage
LOAD_FAST 198124 99.4%
LOAD_CONST 1101 0.6%
LOAD_DEREF 124 0.1%
Successors Count Percentage
LIST_TO_TUPLE 198250 99.4%
LOAD_FAST__LOAD_CONST 602 0.3%
STORE_NAME 289 0.1%

LIST_TO_TUPLE

Successors and predecessors for LIST_TO_TUPLE
Predecessors Count Percentage
LIST_EXTEND 198250 100.0%
LIST_APPEND 54 0.0%
Successors Count Percentage
BUILD_MAP 177587 89.6%
CALL_FUNCTION_EX 20662 10.4%
LOAD_FAST 26 0.0%

LOAD_ATTR

Successors and predecessors for LOAD_ATTR
Predecessors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 231221 77.4%
LOAD_ATTR_WITH_HINT 36759 12.3%
LOAD_FAST 14795 5.0%
Successors Count Percentage
LOAD_GLOBAL_BUILTIN 74196 24.8%
LOAD_GLOBAL_MODULE 38547 12.9%
BUILD_TUPLE 37627 12.6%

LOAD_ATTR_ADAPTIVE

Successors and predecessors for LOAD_ATTR_ADAPTIVE
Predecessors Count Percentage
LOAD_FAST 7792314 57.5%
LOAD_ATTR_SLOT 1292369 9.5%
LOAD_GLOBAL_MODULE 1111509 8.2%
Successors Count Percentage
LOAD_CONST 2465113 18.2%
LOAD_FAST 2326857 17.2%
STORE_FAST__LOAD_FAST 2154870 15.9%

LOAD_ATTR_INSTANCE_VALUE

Successors and predecessors for LOAD_ATTR_INSTANCE_VALUE
Predecessors Count Percentage
LOAD_FAST 20504782 59.2%
LOAD_DEREF 10702186 30.9%
LOAD_FAST__LOAD_FAST 1225560 3.5%
Successors Count Percentage
CONTAINS_OP 6495601 18.8%
LOAD_FAST 5755260 16.6%
POP_JUMP_FORWARD_IF_FALSE 3562294 10.3%

LOAD_ATTR_MODULE

Successors and predecessors for LOAD_ATTR_MODULE
Predecessors Count Percentage
LOAD_GLOBAL_MODULE 5536612 99.9%
LOAD_FAST 1755 0.0%
LOAD_GLOBAL 1215 0.0%
Successors Count Percentage
LOAD_FAST 1676884 30.3%
PRECALL_ADAPTIVE 922892 16.7%
LOAD_GLOBAL_MODULE 682464 12.3%

LOAD_ATTR_SLOT

Successors and predecessors for LOAD_ATTR_SLOT
Predecessors Count Percentage
LOAD_FAST 9380299 93.8%
LOAD_CONST__LOAD_FAST 381774 3.8%
LOAD_ATTR_INSTANCE_VALUE 176555 1.8%
Successors Count Percentage
LOAD_FAST 5877423 58.8%
LOAD_ATTR_ADAPTIVE 1292369 12.9%
BUILD_TUPLE 897670 9.0%

LOAD_ATTR_WITH_HINT

Successors and predecessors for LOAD_ATTR_WITH_HINT
Predecessors Count Percentage
LOAD_FAST 806387 95.8%
STORE_FAST__LOAD_FAST 26126 3.1%
LOAD_ATTR_INSTANCE_VALUE 7356 0.9%
Successors Count Percentage
RETURN_VALUE 235029 27.9%
POP_JUMP_FORWARD_IF_FALSE 148776 17.7%
LOAD_METHOD_WITH_VALUES 58732 7.0%

LOAD_BUILD_CLASS

Successors and predecessors for LOAD_BUILD_CLASS
Predecessors Count Percentage
PUSH_NULL 2918 100.0%
Successors Count Percentage
LOAD_CONST 2883 98.8%
LOAD_CLOSURE 32 1.1%
EXTENDED_ARG_QUICK 3 0.1%

LOAD_CLASSDEREF

Successors and predecessors for LOAD_CLASSDEREF
Predecessors Count Percentage
STORE_NAME 14 100.0%
Successors Count Percentage
STORE_NAME 13 92.9%
LOAD_ATTR 1 7.1%

LOAD_CLOSURE

Successors and predecessors for LOAD_CLOSURE
Predecessors Count Percentage
LOAD_CLOSURE 472893 53.4%
RESUME_QUICK 145087 16.4%
POP_JUMP_FORWARD_IF_TRUE 62373 7.0%
Successors Count Percentage
LOAD_CLOSURE 472893 53.4%
BUILD_TUPLE 411631 46.5%
COPY 503 0.1%

LOAD_CONST

Successors and predecessors for LOAD_CONST
Predecessors Count Percentage
LOAD_METHOD_NO_DICT 11930215 20.3%
LOAD_CONST 8183054 13.9%
PRECALL_BUILTIN_CLASS 6350469 10.8%
Successors Count Percentage
RETURN_VALUE 8999388 15.3%
LOAD_CONST 8183054 13.9%
PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST 6629988 11.3%

LOAD_CONST__LOAD_FAST

Successors and predecessors for LOAD_CONST__LOAD_FAST
Predecessors Count Percentage
FORMAT_VALUE 6219131 50.7%
STORE_ATTR_INSTANCE_VALUE 1641333 13.4%
POP_JUMP_FORWARD_IF_FALSE 839952 6.9%
Successors Count Percentage
LOAD_METHOD_NO_DICT 6247711 51.0%
STORE_ATTR_INSTANCE_VALUE 2609498 21.3%
CONTAINS_OP 1325137 10.8%

LOAD_DEREF

Successors and predecessors for LOAD_DEREF
Predecessors Count Percentage
STORE_FAST 7220517 28.2%
LOAD_FAST 7004117 27.4%
STORE_FAST__LOAD_FAST 6643555 26.0%
Successors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 10702186 41.8%
FORMAT_VALUE 6216512 24.3%
LOAD_FAST 3719492 14.5%

LOAD_FAST

Successors and predecessors for LOAD_FAST
Predecessors Count Percentage
LOAD_GLOBAL_BUILTIN 16828379 13.5%
RESUME_QUICK 15781801 12.7%
POP_JUMP_FORWARD_IF_FALSE 11760602 9.5%
Successors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 20504782 16.5%
LOAD_METHOD_NO_DICT 12444225 10.0%
LOAD_ATTR_SLOT 9380299 7.5%

LOAD_FAST__LOAD_CONST

Successors and predecessors for LOAD_FAST__LOAD_CONST
Predecessors Count Percentage
RESUME_QUICK 3344166 27.9%
LOAD_GLOBAL_BUILTIN 1535367 12.8%
LOAD_GLOBAL_MODULE 967760 8.1%
Successors Count Percentage
BINARY_SUBSCR_TUPLE_INT 3271285 27.3%
BINARY_SUBSCR_ADAPTIVE 1092467 9.1%
BINARY_SUBSCR_DICT 1083097 9.1%

LOAD_FAST__LOAD_FAST

Successors and predecessors for LOAD_FAST__LOAD_FAST
Predecessors Count Percentage
LOAD_GLOBAL_MODULE 2062417 13.5%
STORE_ATTR_INSTANCE_VALUE 1813385 11.9%
LOAD_FAST__LOAD_FAST 1364459 9.0%
Successors Count Percentage
STORE_ATTR_INSTANCE_VALUE 3036626 19.9%
BUILD_TUPLE 1845747 12.1%
LOAD_FAST 1437517 9.4%

LOAD_GLOBAL

Successors and predecessors for LOAD_GLOBAL
Predecessors Count Percentage
LOAD_GLOBAL_BUILTIN 17449 31.3%
LOAD_GLOBAL_MODULE 10839 19.4%
LOAD_FAST 4790 8.6%
Successors Count Percentage
LOAD_FAST 21313 38.2%
PRECALL 4568 8.2%
LOAD_ATTR 4272 7.7%

LOAD_GLOBAL_ADAPTIVE

Successors and predecessors for LOAD_GLOBAL_ADAPTIVE
Predecessors Count Percentage
LOAD_FAST 2833 17.6%
POP_JUMP_FORWARD_IF_FALSE 2408 14.9%
STORE_FAST 2231 13.8%
Successors Count Percentage
LOAD_FAST 4048 25.1%
LOAD_GLOBAL_MODULE 2743 17.0%
LOAD_GLOBAL_BUILTIN 2187 13.6%

LOAD_GLOBAL_BUILTIN

Successors and predecessors for LOAD_GLOBAL_BUILTIN
Predecessors Count Percentage
STORE_FAST 7131323 29.3%
RESUME_QUICK 3738381 15.4%
LOAD_FAST 3173390 13.1%
Successors Count Percentage
LOAD_FAST 16828379 69.2%
PRECALL_NO_KW_ISINSTANCE 2913483 12.0%
LOAD_FAST__LOAD_CONST 1535367 6.3%

LOAD_GLOBAL_MODULE

Successors and predecessors for LOAD_GLOBAL_MODULE
Predecessors Count Percentage
STORE_FAST 2968473 16.6%
LOAD_FAST 2831964 15.8%
RESUME_QUICK 2595405 14.5%
Successors Count Percentage
LOAD_ATTR_MODULE 5536612 30.9%
LOAD_FAST 2422660 13.5%
LOAD_FAST__LOAD_FAST 2062417 11.5%

LOAD_METHOD

Successors and predecessors for LOAD_METHOD
Predecessors Count Percentage
LOAD_METHOD_WITH_DICT 284360 67.0%
LOAD_METHOD_WITH_VALUES 127191 30.0%
LOAD_FAST 6244 1.5%
Successors Count Percentage
PRECALL_PYFUNC 151226 35.7%
LOAD_FAST 132239 31.2%
PRECALL_ADAPTIVE 108713 25.6%

LOAD_METHOD_ADAPTIVE

Successors and predecessors for LOAD_METHOD_ADAPTIVE
Predecessors Count Percentage
LOAD_FAST 3259914 59.9%
LOAD_ATTR_MODULE 630122 11.6%
STORE_FAST__LOAD_FAST 465172 8.5%
Successors Count Percentage
LOAD_FAST 2663958 49.0%
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 1312159 24.1%
LOAD_FAST__LOAD_FAST 389226 7.2%

LOAD_METHOD_CLASS

Successors and predecessors for LOAD_METHOD_CLASS
Predecessors Count Percentage
LOAD_FAST 176026 47.9%
STORE_FAST__LOAD_FAST 176025 47.9%
LOAD_GLOBAL_MODULE 15608 4.2%
Successors Count Percentage
LOAD_FAST__LOAD_CONST 352064 95.8%
LOAD_FAST__LOAD_FAST 15563 4.2%
LOAD_FAST 49 0.0%

LOAD_METHOD_MODULE

Successors and predecessors for LOAD_METHOD_MODULE
Predecessors Count Percentage
LOAD_ATTR_MODULE 81120 63.0%
LOAD_GLOBAL_MODULE 29551 22.9%
LOAD_FAST 15638 12.1%
Successors Count Percentage
LOAD_FAST 80713 62.6%
PRECALL_ADAPTIVE 19110 14.8%
PRECALL_PYFUNC 16582 12.9%

LOAD_METHOD_NO_DICT

Successors and predecessors for LOAD_METHOD_NO_DICT
Predecessors Count Percentage
LOAD_FAST 12444225 41.5%
LOAD_CONST__LOAD_FAST 6247711 20.8%
STORE_FAST__LOAD_FAST 4276628 14.3%
Successors Count Percentage
LOAD_CONST 11930215 39.8%
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 9078910 30.3%
LOAD_FAST 5424774 18.1%

LOAD_METHOD_WITH_DICT

Successors and predecessors for LOAD_METHOD_WITH_DICT
Predecessors Count Percentage
LOAD_DEREF 161436 47.6%
LOAD_FAST 83266 24.5%
LOAD_ATTR_SLOT 36296 10.7%
Successors Count Percentage
LOAD_METHOD 284360 83.8%
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 18024 5.3%
LOAD_GLOBAL_BUILTIN 15514 4.6%

LOAD_METHOD_WITH_VALUES

Successors and predecessors for LOAD_METHOD_WITH_VALUES
Predecessors Count Percentage
LOAD_FAST 4162408 54.6%
LOAD_ATTR_INSTANCE_VALUE 1520235 19.9%
STORE_FAST__LOAD_FAST 1077287 14.1%
Successors Count Percentage
LOAD_FAST 3288784 43.1%
PRECALL_PYFUNC 2066957 27.1%
LOAD_FAST__LOAD_FAST 799402 10.5%

LOAD_NAME

Successors and predecessors for LOAD_NAME
Predecessors Count Percentage
LOAD_CONST 11800 26.2%
LOAD_NAME 11342 25.2%
STORE_NAME 6212 13.8%
Successors Count Percentage
LOAD_NAME 11342 25.2%
LOAD_CONST 9504 21.1%
LOAD_ATTR 4597 10.2%

MAKE_CELL

Successors and predecessors for MAKE_CELL
Predecessors Count Percentage
MAKE_CELL 492331 63.0%
CALL_PY_EXACT_ARGS 254026 32.5%
CALL_ADAPTIVE 32802 4.2%
Successors Count Percentage
MAKE_CELL 492331 50.0%
RESUME_QUICK 310977 31.6%
RETURN_GENERATOR 179583 18.2%

MAKE_FUNCTION

Successors and predecessors for MAKE_FUNCTION
Predecessors Count Percentage
LOAD_CONST 1135324 99.8%
LOAD_FAST__LOAD_CONST 2090 0.2%
Successors Count Percentage
LOAD_FAST 346382 30.5%
LOAD_CONST 266276 23.4%
LOAD_GLOBAL_BUILTIN 121026 10.6%

MAP_ADD

Successors and predecessors for MAP_ADD
Predecessors Count Percentage
BINARY_SUBSCR_ADAPTIVE 3048345 43.7%
BINARY_SUBSCR_DICT 2928274 41.9%
LOAD_FAST 717169 10.3%
Successors Count Percentage
JUMP_BACKWARD_QUICK 6974476 99.9%
EXTENDED_ARG 4283 0.1%
LOAD_CONST 2119 0.0%

NOP

Successors and predecessors for NOP
Predecessors Count Percentage
RESUME_QUICK 951118 23.4%
STORE_FAST 714521 17.6%
POP_JUMP_FORWARD_IF_NONE 486128 11.9%
Successors Count Percentage
LOAD_FAST 2103455 51.7%
LOAD_GLOBAL_BUILTIN 641292 15.8%
LOAD_GLOBAL_MODULE 556341 13.7%

POP_EXCEPT

Successors and predecessors for POP_EXCEPT
Predecessors Count Percentage
STORE_ATTR_INSTANCE_VALUE 117575 44.6%
SWAP 75040 28.5%
COPY 62482 23.7%
Successors Count Percentage
LOAD_CONST 118765 45.1%
RETURN_VALUE 75040 28.5%
RERAISE 62482 23.7%

POP_JUMP_BACKWARD_IF_FALSE

Successors and predecessors for POP_JUMP_BACKWARD_IF_FALSE
Predecessors Count Percentage
CONTAINS_OP 6572006 88.7%
CALL_ADAPTIVE 783460 10.6%
STORE_FAST__LOAD_FAST 48408 0.7%
Successors Count Percentage
FOR_ITER 3714647 50.1%
LOAD_FAST 2980321 40.2%
LOAD_FAST__LOAD_CONST 715414 9.7%

POP_JUMP_BACKWARD_IF_NOT_NONE

Successors and predecessors for POP_JUMP_BACKWARD_IF_NOT_NONE
Predecessors Count Percentage
LOAD_ATTR_SLOT 88 67.7%
STORE_FAST__LOAD_FAST 32 24.6%
LOAD_FAST 10 7.7%
Successors Count Percentage
LOAD_FAST 127 97.7%
LOAD_FAST__LOAD_FAST 3 2.3%

POP_JUMP_BACKWARD_IF_TRUE

Successors and predecessors for POP_JUMP_BACKWARD_IF_TRUE
Predecessors Count Percentage
LOAD_ATTR_INSTANCE_VALUE 60024 48.1%
IS_OP 46779 37.5%
LOAD_FAST 15667 12.6%
Successors Count Percentage
LOAD_FAST 59644 47.8%
LOAD_GLOBAL_BUILTIN 47017 37.7%
LOAD_FAST__LOAD_CONST 15643 12.5%

POP_JUMP_FORWARD_IF_FALSE

Successors and predecessors for POP_JUMP_FORWARD_IF_FALSE
Predecessors Count Percentage
CONTAINS_OP 4046957 17.5%
LOAD_ATTR_INSTANCE_VALUE 3562294 15.4%
PRECALL_NO_KW_ISINSTANCE 3012359 13.0%
Successors Count Percentage
LOAD_FAST 11760602 50.8%
LOAD_CONST 3340696 14.4%
LOAD_GLOBAL_BUILTIN 1819106 7.9%

POP_JUMP_FORWARD_IF_NONE

Successors and predecessors for POP_JUMP_FORWARD_IF_NONE
Predecessors Count Percentage
STORE_FAST__LOAD_FAST 2090253 36.1%
LOAD_FAST 1676203 28.9%
LOAD_ATTR_INSTANCE_VALUE 1443185 24.9%
Successors Count Percentage
LOAD_FAST 3427048 59.2%
LOAD_DEREF 508194 8.8%
NOP 486128 8.4%

POP_JUMP_FORWARD_IF_NOT_NONE

Successors and predecessors for POP_JUMP_FORWARD_IF_NOT_NONE
Predecessors Count Percentage
LOAD_FAST 1879124 45.0%
STORE_FAST__LOAD_FAST 1441137 34.5%
LOAD_ATTR_INSTANCE_VALUE 411995 9.9%
Successors Count Percentage
LOAD_FAST 1525519 36.5%
LOAD_CONST 520942 12.5%
LOAD_GLOBAL_MODULE 469794 11.2%

POP_JUMP_FORWARD_IF_TRUE

Successors and predecessors for POP_JUMP_FORWARD_IF_TRUE
Predecessors Count Percentage
STORE_FAST__LOAD_FAST 1844772 22.7%
LOAD_FAST 1412688 17.4%
LOAD_ATTR_INSTANCE_VALUE 1111937 13.7%
Successors Count Percentage
LOAD_FAST 4200835 51.8%
LOAD_GLOBAL_BUILTIN 1303667 16.1%
LOAD_FAST__LOAD_FAST 1046477 12.9%

POP_TOP

Successors and predecessors for POP_TOP
Predecessors Count Percentage
RETURN_VALUE 4217343 38.7%
CALL_ADAPTIVE 1755434 16.1%
PRECALL_NO_KW_METHOD_DESCRIPTOR_O 1533674 14.1%
Successors Count Percentage
LOAD_FAST 3501986 24.8%
RESUME_QUICK 3208004 22.7%
LOAD_CONST 2986913 21.2%

PRECALL

Successors and predecessors for PRECALL
Predecessors Count Percentage
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 107319 40.1%
PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 33708 12.6%
PRECALL_BOUND_METHOD 30661 11.5%
Successors Count Percentage
CALL_ADAPTIVE 225543 84.4%
CALL 41698 15.6%
CALL_PY_EXACT_ARGS 61 0.0%

PRECALL_ADAPTIVE

Successors and predecessors for PRECALL_ADAPTIVE
Predecessors Count Percentage
LOAD_FAST 3342074 23.2%
KW_NAMES 1879943 13.0%
LOAD_CONST 1558856 10.8%
Successors Count Percentage
CALL_ADAPTIVE 13720950 95.2%
PRECALL_ADAPTIVE 683425 4.7%
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 2258 0.0%

PRECALL_BOUND_METHOD

Successors and predecessors for PRECALL_BOUND_METHOD
Predecessors Count Percentage
LOAD_FAST 836795 57.1%
KW_NAMES 137065 9.4%
LOAD_ATTR_SLOT 117344 8.0%
Successors Count Percentage
CALL_PY_EXACT_ARGS 1017481 69.5%
CALL_ADAPTIVE 224977 15.4%
CALL_PY_WITH_DEFAULTS 191614 13.1%

PRECALL_BUILTIN_CLASS

Successors and predecessors for PRECALL_BUILTIN_CLASS
Predecessors Count Percentage
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 6266194 83.7%
LOAD_FAST 330761 4.4%
LOAD_GLOBAL_BUILTIN 283310 3.8%
Successors Count Percentage
LOAD_CONST 6350469 84.8%
RETURN_VALUE 298663 4.0%
LOAD_METHOD_ADAPTIVE 176912 2.4%

PRECALL_BUILTIN_FAST_WITH_KEYWORDS

Successors and predecessors for PRECALL_BUILTIN_FAST_WITH_KEYWORDS
Predecessors Count Percentage
LOAD_FAST 162853 40.5%
KW_NAMES 101411 25.2%
PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS 63281 15.7%
Successors Count Percentage
STORE_FAST 115486 28.7%
RETURN_VALUE 97386 24.2%
GET_ITER 73648 18.3%

PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS

Successors and predecessors for PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS
Predecessors Count Percentage
LOAD_CONST 1015073 63.9%
LOAD_FAST 279389 17.6%
LOAD_METHOD_NO_DICT 94890 6.0%
Successors Count Percentage
STORE_FAST 371096 23.3%
POP_TOP 328517 20.7%
JUMP_FORWARD 264699 16.7%

PRECALL_NO_KW_BUILTIN_FAST

Successors and predecessors for PRECALL_NO_KW_BUILTIN_FAST
Predecessors Count Percentage
LOAD_FAST__LOAD_CONST 381556 34.8%
LOAD_CONST 354779 32.4%
LOAD_FAST 132595 12.1%
Successors Count Percentage
RETURN_VALUE 322621 29.4%
POP_JUMP_FORWARD_IF_TRUE 315509 28.8%
JUMP_IF_FALSE_OR_POP 255012 23.3%

PRECALL_NO_KW_BUILTIN_O

Successors and predecessors for PRECALL_NO_KW_BUILTIN_O
Predecessors Count Percentage
BUILD_TUPLE 400501 45.7%
LOAD_FAST 275614 31.4%
SEND 74126 8.5%
Successors Count Percentage
RETURN_VALUE 401878 45.8%
POP_TOP 313619 35.8%
STORE_FAST 77868 8.9%

PRECALL_NO_KW_ISINSTANCE

Successors and predecessors for PRECALL_NO_KW_ISINSTANCE
Predecessors Count Percentage
LOAD_GLOBAL_BUILTIN 2913483 71.3%
LOAD_GLOBAL_MODULE 788029 19.3%
BUILD_TUPLE 297623 7.3%
Successors Count Percentage
POP_JUMP_FORWARD_IF_FALSE 3012359 73.7%
POP_JUMP_FORWARD_IF_TRUE 985254 24.1%
STORE_FAST__LOAD_FAST 81542 2.0%

PRECALL_NO_KW_LEN

Successors and predecessors for PRECALL_NO_KW_LEN
Predecessors Count Percentage
LOAD_FAST 2471536 85.3%
LOAD_ATTR_INSTANCE_VALUE 243191 8.4%
BINARY_SUBSCR_LIST_INT 138583 4.8%
Successors Count Percentage
LOAD_CONST 1426087 49.2%
BUILD_TUPLE 248373 8.6%
BINARY_OP_SUBTRACT_INT 220479 7.6%

PRECALL_NO_KW_LIST_APPEND

Successors and predecessors for PRECALL_NO_KW_LIST_APPEND
Predecessors Count Percentage
LOAD_FAST 1517467 76.6%
BUILD_TUPLE 386311 19.5%
RETURN_VALUE 44389 2.2%
Successors Count Percentage
JUMP_BACKWARD_QUICK 1410424 71.2%
LOAD_FAST 273063 13.8%
LOAD_CONST 203958 10.3%

PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST

Successors and predecessors for PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST
Predecessors Count Percentage
LOAD_CONST 6629988 77.5%
LOAD_GLOBAL_MODULE 654784 7.7%
LOAD_FAST 368373 4.3%
Successors Count Percentage
FORMAT_VALUE 6216426 72.6%
STORE_FAST__LOAD_FAST 692583 8.1%
LIST_APPEND 589539 6.9%

PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS

Successors and predecessors for PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS
Predecessors Count Percentage
LOAD_METHOD_NO_DICT 9078910 86.7%
LOAD_METHOD_ADAPTIVE 1312159 12.5%
LOAD_METHOD_WITH_VALUES 50403 0.5%
Successors Count Percentage
PRECALL_BUILTIN_CLASS 6266194 59.8%
POP_JUMP_FORWARD_IF_FALSE 999350 9.5%
STORE_FAST__LOAD_FAST 906664 8.7%

PRECALL_NO_KW_METHOD_DESCRIPTOR_O

Successors and predecessors for PRECALL_NO_KW_METHOD_DESCRIPTOR_O
Predecessors Count Percentage
LOAD_CONST 3113806 54.7%
LOAD_FAST 1733409 30.4%
CALL_ADAPTIVE 374964 6.6%
Successors Count Percentage
UNPACK_SEQUENCE_TUPLE 3471351 61.0%
POP_TOP 1533674 26.9%
RETURN_VALUE 262708 4.6%

PRECALL_NO_KW_STR_1

Successors and predecessors for PRECALL_NO_KW_STR_1
Predecessors Count Percentage
LOAD_FAST 1048609 72.7%
PRECALL_NO_KW_LEN 202348 14.0%
RETURN_VALUE 117348 8.1%
Successors Count Percentage
BINARY_OP_ADD_UNICODE 293856 20.4%
LOAD_GLOBAL_BUILTIN 277166 19.2%
RETURN_VALUE 234870 16.3%

PRECALL_NO_KW_TUPLE_1

Successors and predecessors for PRECALL_NO_KW_TUPLE_1
Predecessors Count Percentage
LOAD_FAST 76746 90.2%
RETURN_GENERATOR 4195 4.9%
LOAD_GLOBAL_MODULE 990 1.2%
Successors Count Percentage
LOAD_FAST 76272 89.7%
RETURN_VALUE 2562 3.0%
STORE_FAST__LOAD_FAST 2027 2.4%

PRECALL_NO_KW_TYPE_1

Successors and predecessors for PRECALL_NO_KW_TYPE_1
Predecessors Count Percentage
LOAD_FAST 896552 83.1%
LOAD_CONST 181261 16.8%
LOAD_GLOBAL_MODULE 748 0.1%
Successors Count Percentage
LOAD_GLOBAL_MODULE 313035 29.0%
LOAD_FAST 238265 22.1%
BUILD_TUPLE 182462 16.9%

PRECALL_PYFUNC

Successors and predecessors for PRECALL_PYFUNC
Predecessors Count Percentage
LOAD_FAST 4811651 36.1%
LOAD_METHOD_WITH_VALUES 2066957 15.5%
KW_NAMES 1466927 11.0%
Successors Count Percentage
CALL_PY_EXACT_ARGS 10613002 79.7%
CALL_ADAPTIVE 2418286 18.2%
CALL_PY_WITH_DEFAULTS 282147 2.1%

PUSH_EXC_INFO

Successors and predecessors for PUSH_EXC_INFO
Predecessors Count Percentage
BINARY_OP_ADAPTIVE 117345 44.6%
BINARY_SUBSCR_DICT 63407 24.1%
RERAISE 61625 23.4%
Successors Count Percentage
LOAD_GLOBAL_BUILTIN 261595 99.3%
LOAD_CONST 447 0.2%
LOAD_GLOBAL_MODULE 387 0.1%

PUSH_NULL

Successors and predecessors for PUSH_NULL
Predecessors Count Percentage
STORE_FAST 664656 28.6%
RESUME_QUICK 515322 22.1%
NOP 278434 12.0%
Successors Count Percentage
LOAD_FAST 1011617 43.5%
LOAD_FAST__LOAD_FAST 624221 26.8%
LOAD_DEREF 618920 26.6%

RAISE_VARARGS

Successors and predecessors for RAISE_VARARGS
Predecessors Count Percentage
LOAD_CONST 61150 76.6%
CALL_ADAPTIVE 17782 22.3%
LOAD_FAST 464 0.6%
Successors Count Percentage
COPY 61294 79.0%
PUSH_EXC_INFO 16189 20.9%
LOAD_CONST 132 0.2%

RERAISE

Successors and predecessors for RERAISE
Predecessors Count Percentage
POP_EXCEPT 62482 98.2%
STORE_FAST 447 0.7%
POP_JUMP_FORWARD_IF_FALSE 358 0.6%
Successors Count Percentage
PUSH_EXC_INFO 61625 98.2%
COPY 1120 1.8%

RESUME

Successors and predecessors for RESUME
Predecessors Count Percentage
CALL 6128 51.2%
CALL_PY_EXACT_ARGS 1589 13.3%
COPY_FREE_VARS 1484 12.4%
Successors Count Percentage
LOAD_FAST 6774 33.9%
LOAD_GLOBAL 4576 22.9%
LOAD_NAME 2960 14.8%

RESUME_QUICK

Successors and predecessors for RESUME_QUICK
Predecessors Count Percentage
CALL_PY_EXACT_ARGS 9170604 55.9%
POP_TOP 3208004 19.6%
CALL_ADAPTIVE 1929784 11.8%
Successors Count Percentage
LOAD_FAST 15781801 48.9%
LOAD_GLOBAL_BUILTIN 3738381 11.6%
LOAD_FAST__LOAD_CONST 3344166 10.4%

RETURN_GENERATOR

Successors and predecessors for RETURN_GENERATOR
Predecessors Count Percentage
CALL_PY_EXACT_ARGS 1344655 55.3%
COPY_FREE_VARS 395105 16.2%
CALL_ADAPTIVE 319863 13.2%
Successors Count Percentage
GET_AWAITABLE 1698660 78.6%
PRECALL_ADAPTIVE 150609 7.0%
YIELD_VALUE 117526 5.4%

RETURN_VALUE

Successors and predecessors for RETURN_VALUE
Predecessors Count Percentage
LOAD_CONST 8999388 29.6%
LOAD_FAST 4775345 15.7%
BINARY_SUBSCR_TUPLE_INT 3167195 10.4%
Successors Count Percentage
POP_TOP 4217343 33.4%
STORE_FAST__LOAD_FAST 2243426 17.8%
STORE_FAST 1479269 11.7%

SEND

Successors and predecessors for SEND
Predecessors Count Percentage
LOAD_CONST 2978359 65.4%
JUMP_BACKWARD_NO_INTERRUPT 1572350 34.6%
Successors Count Percentage
YIELD_VALUE 1572814 34.6%
POP_TOP 1229997 27.0%
STORE_FAST__LOAD_FAST 468125 10.3%

SETUP_ANNOTATIONS

Successors and predecessors for SETUP_ANNOTATIONS
Predecessors Count Percentage
STORE_NAME 218 83.5%
RESUME 43 16.5%
Successors Count Percentage
LOAD_CONST 166 63.6%
LOAD_NAME 81 31.0%
PUSH_NULL 12 4.6%

SET_ADD

Successors and predecessors for SET_ADD
Predecessors Count Percentage
PRECALL_BUILTIN_CLASS 2793 83.3%
PRECALL_NO_KW_BUILTIN_O 234 7.0%
LOAD_FAST 141 4.2%
Successors Count Percentage
JUMP_BACKWARD_QUICK 3265 97.3%
JUMP_BACKWARD 89 2.7%

SET_UPDATE

Successors and predecessors for SET_UPDATE
Predecessors Count Percentage
LOAD_CONST 26 100.0%
Successors Count Percentage
STORE_NAME 14 53.8%
STORE_FAST 7 26.9%
PRECALL 3 11.5%

STORE_ATTR

Successors and predecessors for STORE_ATTR
Predecessors Count Percentage
STORE_ATTR_INSTANCE_VALUE 95124 86.9%
LOAD_FAST 9496 8.7%
STORE_ATTR_WITH_HINT 3480 3.2%
Successors Count Percentage
LOAD_FAST 73922 67.5%
LOAD_CONST 17879 16.3%
LOAD_CONST__LOAD_FAST 8093 7.4%

STORE_ATTR_ADAPTIVE

Successors and predecessors for STORE_ATTR_ADAPTIVE
Predecessors Count Percentage
LOAD_CONST__LOAD_FAST 323591 49.9%
LOAD_FAST__LOAD_FAST 156992 24.2%
LOAD_FAST 95786 14.8%
Successors Count Percentage
LOAD_DEREF 196459 30.3%
LOAD_CONST 132098 20.4%
LOAD_FAST 117594 18.2%

STORE_ATTR_INSTANCE_VALUE

Successors and predecessors for STORE_ATTR_INSTANCE_VALUE
Predecessors Count Percentage
LOAD_FAST__LOAD_FAST 3036626 34.5%
LOAD_CONST__LOAD_FAST 2609498 29.7%
LOAD_FAST 2510197 28.5%
Successors Count Percentage
LOAD_FAST 2713770 30.9%
LOAD_FAST__LOAD_FAST 1813385 20.6%
LOAD_CONST__LOAD_FAST 1641333 18.7%

STORE_ATTR_SLOT

Successors and predecessors for STORE_ATTR_SLOT
Predecessors Count Percentage
LOAD_FAST 707021 74.3%
LOAD_FAST__LOAD_FAST 124183 13.1%
LOAD_CONST__LOAD_FAST 119770 12.6%
Successors Count Percentage
LOAD_FAST 412994 43.4%
LOAD_CONST 237109 24.9%
BUILD_MAP 176027 18.5%

STORE_ATTR_WITH_HINT

Successors and predecessors for STORE_ATTR_WITH_HINT
Predecessors Count Percentage
LOAD_FAST 119727 99.1%
LOAD_CONST__LOAD_FAST 806 0.7%
LOAD_FAST__LOAD_FAST 194 0.2%
Successors Count Percentage
LOAD_FAST 117336 97.1%
STORE_ATTR 3480 2.9%
LOAD_CONST__LOAD_FAST 3 0.0%

STORE_DEREF

Successors and predecessors for STORE_DEREF
Predecessors Count Percentage
BINARY_OP_ADD_INT 390327 47.8%
LOAD_CONST 250002 30.6%
CALL_ADAPTIVE 77575 9.5%
Successors Count Percentage
LOAD_DEREF 258213 31.6%
LOAD_CONST 217790 26.7%
LOAD_FAST__LOAD_FAST 195420 23.9%

STORE_FAST

Successors and predecessors for STORE_FAST
Predecessors Count Percentage
FOR_ITER 14201160 63.7%
RETURN_VALUE 1479269 6.6%
CALL_ADAPTIVE 1478685 6.6%
Successors Count Percentage
LOAD_DEREF 7220517 32.4%
LOAD_GLOBAL_BUILTIN 7131323 32.0%
LOAD_GLOBAL_MODULE 2968473 13.3%

STORE_FAST__LOAD_FAST

Successors and predecessors for STORE_FAST__LOAD_FAST
Predecessors Count Percentage
FOR_ITER 19293662 51.0%
STORE_FAST__STORE_FAST 3386280 8.9%
CALL_ADAPTIVE 3354093 8.9%
Successors Count Percentage
LOAD_DEREF 6643555 17.6%
LIST_APPEND 6584426 17.4%
LOAD_CONST 4835678 12.8%

STORE_FAST__STORE_FAST

Successors and predecessors for STORE_FAST__STORE_FAST
Predecessors Count Percentage
UNPACK_SEQUENCE_TWO_TUPLE 6381582 60.7%
UNPACK_SEQUENCE_TUPLE 3616347 34.4%
COPY 287404 2.7%
Successors Count Percentage
LOAD_FAST 5081694 48.3%
STORE_FAST__LOAD_FAST 3386280 32.2%
LOAD_FAST__LOAD_FAST 809451 7.7%

STORE_GLOBAL

Successors and predecessors for STORE_GLOBAL
Predecessors Count Percentage
LOAD_CONST 73 37.8%
JUMP_IF_TRUE_OR_POP 54 28.0%
CALL 15 7.8%
Successors Count Percentage
LOAD_CONST 77 39.9%
LOAD_GLOBAL_MODULE 40 20.7%
LOAD_GLOBAL 33 17.1%

STORE_NAME

Successors and predecessors for STORE_NAME
Predecessors Count Percentage
MAKE_FUNCTION 15426 32.1%
LOAD_CONST 7968 16.6%
IMPORT_FROM 6123 12.7%
Successors Count Percentage
LOAD_CONST 26587 55.4%
LOAD_NAME 6212 12.9%
PUSH_NULL 5256 10.9%

STORE_SUBSCR

Successors and predecessors for STORE_SUBSCR
Predecessors Count Percentage
LOAD_CONST 1287 56.6%
LOAD_FAST 526 23.1%
LOAD_ATTR 128 5.6%
Successors Count Percentage
LOAD_CONST 700 30.8%
LOAD_FAST 455 20.0%
LOAD_NAME 303 13.3%

STORE_SUBSCR_ADAPTIVE

Successors and predecessors for STORE_SUBSCR_ADAPTIVE
Predecessors Count Percentage
LOAD_FAST 148452 52.5%
LOAD_ATTR_MODULE 117348 41.5%
SWAP 10909 3.9%
Successors Count Percentage
JUMP_BACKWARD_QUICK 149361 52.9%
LOAD_CONST 59497 21.1%
LOAD_FAST 58994 20.9%

STORE_SUBSCR_DICT

Successors and predecessors for STORE_SUBSCR_DICT
Predecessors Count Percentage
LOAD_FAST__LOAD_FAST 474537 28.1%
BINARY_SUBSCR_DICT 442635 26.2%
LOAD_FAST 291665 17.3%
Successors Count Percentage
LOAD_FAST 878739 52.0%
LOAD_FAST__LOAD_FAST 473883 28.1%
JUMP_BACKWARD_QUICK 100561 6.0%

STORE_SUBSCR_LIST_INT

Successors and predecessors for STORE_SUBSCR_LIST_INT
Predecessors Count Percentage
LOAD_FAST__LOAD_FAST 3507 77.6%
LOAD_FAST 694 15.4%
LOAD_NAME 221 4.9%
Successors Count Percentage
JUMP_BACKWARD_QUICK 2072 45.9%
EXTENDED_ARG_QUICK 1367 30.3%
LOAD_CONST 524 11.6%

SWAP

Successors and predecessors for SWAP
Predecessors Count Percentage
LOAD_CONST__LOAD_FAST 410858 32.9%
BINARY_OP_ADD_INT 405140 32.5%
BINARY_OP_SUBTRACT_INT 135060 10.8%
Successors Count Percentage
STORE_ATTR_INSTANCE_VALUE 560289 44.9%
COPY 413031 33.1%
POP_EXCEPT 75040 6.0%

UNARY_INVERT

Successors and predecessors for UNARY_INVERT
Predecessors Count Percentage
LOAD_FAST 682 98.0%
LOAD_FAST__LOAD_FAST 8 1.1%
CALL 6 0.9%
Successors Count Percentage
BINARY_OP_ADAPTIVE 647 93.0%
BINARY_OP 28 4.0%
LOAD_CONST 13 1.9%

UNARY_NEGATIVE

Successors and predecessors for UNARY_NEGATIVE
Predecessors Count Percentage
LOAD_GLOBAL_MODULE 15522 94.8%
STORE_FAST__LOAD_FAST 279 1.7%
LOAD_CONST__LOAD_FAST 279 1.7%
Successors Count Percentage
LOAD_CONST 15831 96.7%
STORE_FAST 280 1.7%
PRECALL_BUILTIN_CLASS 135 0.8%

UNARY_NOT

Successors and predecessors for UNARY_NOT
Predecessors Count Percentage
LOAD_FAST 60045 50.1%
CALL_ADAPTIVE 58703 49.0%
PRECALL_NO_KW_ISINSTANCE 572 0.5%
Successors Count Percentage
RETURN_VALUE 58739 49.0%
LOAD_FAST__LOAD_FAST 58669 48.9%
JUMP_IF_FALSE_OR_POP 1227 1.0%

UNARY_POSITIVE

Successors and predecessors for UNARY_POSITIVE
Predecessors Count Percentage
LOAD_ATTR 10 100.0%
Successors Count Percentage
BUILD_TUPLE 4 40.0%
PRECALL 3 30.0%
LOAD_GLOBAL 3 30.0%

UNPACK_SEQUENCE

Successors and predecessors for UNPACK_SEQUENCE
Predecessors Count Percentage
FOR_ITER 949 54.7%
RETURN_VALUE 395 22.8%
CALL 243 14.0%
Successors Count Percentage
STORE_FAST 1562 90.1%
STORE_NAME 99 5.7%
LOAD_FAST 40 2.3%

UNPACK_SEQUENCE_ADAPTIVE

Successors and predecessors for UNPACK_SEQUENCE_ADAPTIVE
Predecessors Count Percentage
FOR_ITER 160 40.9%
RETURN_VALUE 110 28.1%
RETURN_GENERATOR 33 8.4%
Successors Count Percentage
UNPACK_SEQUENCE_TWO_TUPLE 245 62.7%
UNPACK_SEQUENCE_TUPLE 55 14.1%
STORE_FAST__STORE_FAST 34 8.7%

UNPACK_SEQUENCE_LIST

Successors and predecessors for UNPACK_SEQUENCE_LIST
Predecessors Count Percentage
PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS 54544 63.4%
SEND 31038 36.1%
BINARY_SUBSCR_ADAPTIVE 334 0.4%
Successors Count Percentage
STORE_FAST__STORE_FAST 86007 99.9%
STORE_DEREF 33 0.0%
STORE_FAST 12 0.0%

UNPACK_SEQUENCE_TUPLE

Successors and predecessors for UNPACK_SEQUENCE_TUPLE
Predecessors Count Percentage
PRECALL_NO_KW_METHOD_DESCRIPTOR_O 3471351 96.0%
RETURN_VALUE 67290 1.9%
CALL_ADAPTIVE 59302 1.6%
Successors Count Percentage
STORE_FAST__STORE_FAST 3616347 100.0%
STORE_DEREF 52 0.0%
LOAD_FAST 39 0.0%

UNPACK_SEQUENCE_TWO_TUPLE

Successors and predecessors for UNPACK_SEQUENCE_TWO_TUPLE
Predecessors Count Percentage
FOR_ITER 5869497 91.9%
RETURN_VALUE 335105 5.2%
SEND 58995 0.9%
Successors Count Percentage
STORE_FAST__STORE_FAST 6381582 99.9%
STORE_FAST 3521 0.1%
STORE_NAME 630 0.0%

WITH_EXCEPT_START

Successors and predecessors for WITH_EXCEPT_START
Predecessors Count Percentage
PUSH_EXC_INFO 212 100.0%
Successors Count Percentage
POP_JUMP_FORWARD_IF_TRUE 146 68.9%
COPY 66 31.1%

YIELD_VALUE

Successors and predecessors for YIELD_VALUE
Predecessors Count Percentage
SEND 1572814 86.7%
RETURN_GENERATOR 117526 6.5%
BINARY_OP_ADAPTIVE 66036 3.6%
Successors Count Percentage

Specialization stats

specialization stats by family

BINARY_SUBSCR

specialization stats for BINARY_SUBSCR family
Kind Count Ratio
unquickened 48057 0.2%
specialization.deferred 6220989 22.8%
specialization.deopt 734 0.0%
hit 20928172 76.8%
miss 39312 0.1%

Specialization attempts

Count Ratio
Success 1245 27.9%
Failure 3210 72.1%
Failure kind Count Ratio
buffer int 1060 33.0%
string slice 780 24.3%
string int 417 13.0%
list slice 293 9.1%
other 266 8.3%
buffer slice 156 4.9%
tuple slice 154 4.8%
array slice 58 1.8%
sequence int 26 0.8%

STORE_SUBSCR

specialization stats for STORE_SUBSCR family
Kind Count Ratio
unquickened 2274 0.1%
specialization.deferred 281901 14.3%
hit 1693448 85.6%

Specialization attempts

Count Ratio
Success 353 52.7%
Failure 317 47.3%
Failure kind Count Ratio
other 114 36.0%
bytearray int 112 35.3%
py simple 46 14.5%
dict subclass no override 28 8.8%
list slice 10 3.2%
out of range 7 2.2%

UNPACK_SEQUENCE

specialization stats for UNPACK_SEQUENCE family
Kind Count Ratio
unquickened 1734 0.0%
specialization.deferred 67 0.0%
hit 10088708 100.0%

Specialization attempts

Count Ratio
Success 314 96.9%
Failure 10 3.1%
Failure kind Count Ratio
sequence 5 50.0%
iterator 5 50.0%

FOR_ITER

specialization stats for FOR_ITER family
Kind Count Ratio
unquickened 42738132 100.0%

Specialization attempts

Count Ratio
Success 0 0.0%
Failure 42738132 100.0%
Failure kind Count Ratio
list 33545007 78.5%
enumerate 2946553 6.9%
dict items 2694300 6.3%
tuple 1408632 3.3%
range 1300536 3.0%
other 709183 1.7%
dict values 65949 0.2%
generator 60175 0.1%
set 3914 0.0%
dict keys 2235 0.0%
itertools 1405 0.0%
bytes 217 0.0%
string 26 0.0%

STORE_ATTR

specialization stats for STORE_ATTR family
Kind Count Ratio
unquickened 109519 1.0%
specialization.deferred 643773 6.1%
specialization.deopt 1795 0.0%
hit 9767523 92.0%
miss 99456 0.9%

Specialization attempts

Count Ratio
Success 2843 69.8%
Failure 1232 30.2%
Failure kind Count Ratio
overridden 404 32.8%
not managed dict 287 23.3%
out of range 253 20.5%
overriding descriptor 156 12.7%
non object slot 100 8.1%
mutable class 21 1.7%
method 8 0.6%
property 3 0.2%

LOAD_ATTR

specialization stats for LOAD_ATTR family
Kind Count Ratio
unquickened 298852 0.5%
specialization.deferred 13523254 20.9%
specialization.deopt 5037 0.0%
hit 50740305 78.3%
miss 272608 0.4%

Specialization attempts

Count Ratio
Success 7523 43.2%
Failure 9873 56.8%
Failure kind Count Ratio
overridden 2890 29.3%
property 2592 26.3%
overriding descriptor 1712 17.3%
method 1047 10.6%
out of range 641 6.5%
non object slot 495 5.0%
not managed dict 298 3.0%
mutable class 148 1.5%
module attr not found 50 0.5%

COMPARE_OP

specialization stats for COMPARE_OP family
Kind Count Ratio
unquickened 6950 0.1%
specialization.deferred 2400467 24.7%
specialization.deopt 54 0.0%
hit 7292063 75.2%
miss 2924 0.0%

Specialization attempts

Count Ratio
Success 541 23.7%
Failure 1741 76.3%
Failure kind Count Ratio
not followed by cond jump 584 33.5%
different types 296 17.0%
float long 195 11.2%
baseobject 152 8.7%
bytes 149 8.6%
other 136 7.8%
big int 120 6.9%
tuple 54 3.1%
list 27 1.6%
set 14 0.8%
bool 8 0.5%
long float 6 0.3%

LOAD_GLOBAL

specialization stats for LOAD_GLOBAL family
Kind Count Ratio
unquickened 55783 0.1%
specialization.deferred 11248 0.0%
specialization.deopt 403 0.0%
hit 42212856 99.8%
miss 28288 0.1%

Specialization attempts

Count Ratio
Success 4889 100.0%
Failure 0 0.0%
Failure kind Count Ratio

BINARY_OP

specialization stats for BINARY_OP family
Kind Count Ratio
unquickened 4177 0.1%
specialization.deferred 823745 18.9%
specialization.deopt 3 0.0%
hit 3539617 81.0%
miss 217 0.0%

Specialization attempts

Count Ratio
Success 455 21.2%
Failure 1694 78.8%
Failure kind Count Ratio
and int 460 27.2%
add other 415 24.5%
remainder 195 11.5%
multiply different types 148 8.7%
or 137 8.1%
add different types 80 4.7%
true divide other 68 4.0%
xor 50 3.0%
subtract different types 38 2.2%
floor divide 29 1.7%
lshift 14 0.8%
and different types 14 0.8%
rshift 13 0.8%
power 13 0.8%
and other 8 0.5%
subtract other 7 0.4%
true divide different types 5 0.3%

LOAD_METHOD

specialization stats for LOAD_METHOD family
Kind Count Ratio
unquickened 424109 1.0%
specialization.deferred 5428918 12.2%
specialization.deopt 7738 0.0%
hit 38055405 85.9%
miss 411657 0.9%

Specialization attempts

Count Ratio
Success 9478 75.0%
Failure 3151 25.0%
Failure kind Count Ratio
overridden 941 29.9%
no dict 824 26.2%
instance attribute 372 11.8%
class method obj 343 10.9%
metaclass attribute 282 8.9%
builtin class method 141 4.5%
non overriding descriptor 98 3.1%
not descriptor 90 2.9%
mutable class 22 0.7%
object slot 14 0.4%
other 12 0.4%
out of range 10 0.3%
is attr 2 0.1%

PRECALL

specialization stats for PRECALL family
Kind Count Ratio
unquickened 267302 0.3%
specialization.deferred 13721001 17.9%
specialization.deopt 4247 0.0%
hit 62302860 81.4%
miss 225604 0.3%

Specialization attempts

Count Ratio
Success 8914 1.3%
Failure 683425 98.7%
Failure kind Count Ratio
class no vectorcall 132442 19.4%
class mutable 97455 14.3%
pycfunction with keywords 88849 13.0%
pycfunction 83065 12.2%
other 81824 12.0%
pycfunction noargs 63211 9.2%
python class 61684 9.0%
operator wrapper 37993 5.6%
bad call flags 24367 3.6%
kwnames 6961 1.0%
method wrapper 5561 0.8%
cmethod 10 0.0%
str 3 0.0%

CALL

specialization stats for CALL family
Kind Count Ratio
unquickened 758307 2.6%
specialization.deferred 16574783 56.3%
specialization.deopt 13426 0.0%
hit 11402720 38.7%
miss 716609 2.4%

Specialization attempts

Count Ratio
Success 14973 56.6%
Failure 11501 43.4%
Failure kind Count Ratio
method descriptor 3048 26.5%
class 2208 19.2%
pycfunction 1624 14.1%
python class 1249 10.9%
kwnames 1111 9.7%
complex parameters 853 7.4%
other 649 5.6%
operator wrapper 291 2.5%
bound method 228 2.0%
method wrapper 220 1.9%
cmethod 20 0.2%

Specialization effectiveness

specialization effectiveness
Instructions Count Ratio
Basic 531008453 55.1%
Not specialized 106909699 11.1%
Specialized 326489980 33.9%

Call stats

Inlined calls and frame stats
Count Ratio
Calls to PyEval_EvalDefault 20601310 58.1%
Calls to Python functions inlined 14876343 41.9%
Frames pushed 30454247 85.8%
Frame objects created 479291 1.4%

Object stats

allocations, frees and dict materializatons
Count Ratio
Allocations from freelist 55374137
Frees to freelist 55470720
Allocations 124870061
Allocations to 512 bytes 123627147
Allocations to 4 kbytes 1120430
Allocations over 4 kbytes 122484
Frees 121367657
New values 792759
Materialize dict (on request) 19421 2.4%
Materialize dict (new key) 58766 7.4%
Materialize dict (too big) 0 0.0%
Materialize dict (str subclass) 0 0.0%

Stats gathered on: 2022-10-31

@markshannon
Copy link
Member

We should gather these results somewhere. Presumably in the stats/ folder

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
benchmarking Anything related to measurement: Adding new benchmarks, benchmarking infrastructure etc.
Projects
Development

No branches or pull requests

8 participants