Skip to content

Commit 76b6c74

Browse files
feat: microoptimize __repr__ (#11)
* feat: microoptimize `__repr__` * chore: compile C files for source control --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent c7c2ec9 commit 76b6c74

File tree

3 files changed

+153
-254
lines changed

3 files changed

+153
-254
lines changed

build/__native_6a32f4913d613d6a7ddf.c

Lines changed: 29 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -2045,97 +2045,38 @@ fail: ;
20452045
PyObject *CPyDef_main_____repr___3_HexBytes_obj_____call__(PyObject *cpy_r___mypyc_self__, PyObject *cpy_r_self) {
20462046
PyObject *cpy_r_r0;
20472047
PyObject *cpy_r_r1;
2048-
PyObject *cpy_r_r2;
2049-
PyObject *cpy_r_r3;
2048+
PyObject **cpy_r_r3;
20502049
PyObject *cpy_r_r4;
2051-
PyObject **cpy_r_r6;
2050+
PyObject *cpy_r_r5;
2051+
PyObject *cpy_r_r6;
20522052
PyObject *cpy_r_r7;
20532053
PyObject *cpy_r_r8;
2054-
PyObject *cpy_r_r9;
2055-
PyObject *cpy_r_r10;
2056-
PyObject *cpy_r_r11;
2057-
PyObject **cpy_r_r13;
2058-
PyObject *cpy_r_r14;
2059-
PyObject *cpy_r_r15;
2060-
PyObject *cpy_r_r16;
2061-
PyObject *cpy_r_r17;
2062-
CPyPtr cpy_r_r18;
2063-
CPyPtr cpy_r_r19;
2064-
CPyPtr cpy_r_r20;
2065-
CPyPtr cpy_r_r21;
2066-
PyObject *cpy_r_r22;
2067-
PyObject *cpy_r_r23;
2068-
cpy_r_r0 = CPyStatics[17]; /* '' */
2069-
cpy_r_r1 = CPyStatics[38]; /* 'HexBytes(' */
2070-
cpy_r_r2 = CPyStatics[19]; /* '{!r:{}}' */
2071-
cpy_r_r3 = CPyStatics[24]; /* '0x' */
2072-
cpy_r_r4 = CPyStatics[15]; /* 'hex' */
2073-
PyObject *cpy_r_r5[1] = {cpy_r_self};
2074-
cpy_r_r6 = (PyObject **)&cpy_r_r5;
2075-
cpy_r_r7 = PyObject_VectorcallMethod(cpy_r_r4, cpy_r_r6, 9223372036854775809ULL, 0);
2076-
if (unlikely(cpy_r_r7 == NULL)) {
2077-
CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals);
2078-
goto CPyL8;
2079-
}
2080-
if (likely(PyUnicode_Check(cpy_r_r7)))
2081-
cpy_r_r8 = cpy_r_r7;
2082-
else {
2083-
CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r7);
2084-
goto CPyL8;
2085-
}
2086-
cpy_r_r9 = PyUnicode_Concat(cpy_r_r3, cpy_r_r8);
2087-
CPy_DECREF(cpy_r_r8);
2088-
if (unlikely(cpy_r_r9 == NULL)) {
2089-
CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals);
2090-
goto CPyL8;
2091-
}
2092-
cpy_r_r10 = CPyStatics[17]; /* '' */
2093-
cpy_r_r11 = CPyStatics[20]; /* 'format' */
2094-
PyObject *cpy_r_r12[3] = {cpy_r_r2, cpy_r_r9, cpy_r_r10};
2095-
cpy_r_r13 = (PyObject **)&cpy_r_r12;
2096-
cpy_r_r14 = PyObject_VectorcallMethod(cpy_r_r11, cpy_r_r13, 9223372036854775811ULL, 0);
2097-
if (unlikely(cpy_r_r14 == NULL)) {
2054+
cpy_r_r0 = CPyStatics[38]; /* "HexBytes('0x" */
2055+
cpy_r_r1 = CPyStatics[15]; /* 'hex' */
2056+
PyObject *cpy_r_r2[1] = {cpy_r_self};
2057+
cpy_r_r3 = (PyObject **)&cpy_r_r2;
2058+
cpy_r_r4 = PyObject_VectorcallMethod(cpy_r_r1, cpy_r_r3, 9223372036854775809ULL, 0);
2059+
if (unlikely(cpy_r_r4 == NULL)) {
20982060
CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals);
2099-
goto CPyL9;
2061+
goto CPyL4;
21002062
}
2101-
CPy_DECREF(cpy_r_r9);
2102-
if (likely(PyUnicode_Check(cpy_r_r14)))
2103-
cpy_r_r15 = cpy_r_r14;
2063+
if (likely(PyUnicode_Check(cpy_r_r4)))
2064+
cpy_r_r5 = cpy_r_r4;
21042065
else {
2105-
CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r14);
2106-
goto CPyL8;
2107-
}
2108-
cpy_r_r16 = CPyStatics[39]; /* ')' */
2109-
cpy_r_r17 = PyList_New(3);
2110-
if (unlikely(cpy_r_r17 == NULL)) {
2111-
CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals);
2112-
goto CPyL10;
2066+
CPy_TypeErrorTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals, "str", cpy_r_r4);
2067+
goto CPyL4;
21132068
}
2114-
cpy_r_r18 = (CPyPtr)&((PyListObject *)cpy_r_r17)->ob_item;
2115-
cpy_r_r19 = *(CPyPtr *)cpy_r_r18;
2116-
CPy_INCREF(cpy_r_r1);
2117-
*(PyObject * *)cpy_r_r19 = cpy_r_r1;
2118-
cpy_r_r20 = cpy_r_r19 + 8;
2119-
*(PyObject * *)cpy_r_r20 = cpy_r_r15;
2120-
CPy_INCREF(cpy_r_r16);
2121-
cpy_r_r21 = cpy_r_r19 + 16;
2122-
*(PyObject * *)cpy_r_r21 = cpy_r_r16;
2123-
cpy_r_r22 = PyUnicode_Join(cpy_r_r0, cpy_r_r17);
2124-
CPy_DECREF_NO_IMM(cpy_r_r17);
2125-
if (unlikely(cpy_r_r22 == NULL)) {
2069+
cpy_r_r6 = CPyStatics[39]; /* "')" */
2070+
cpy_r_r7 = CPyStr_Build(3, cpy_r_r0, cpy_r_r5, cpy_r_r6);
2071+
CPy_DECREF(cpy_r_r5);
2072+
if (unlikely(cpy_r_r7 == NULL)) {
21262073
CPy_AddTraceback("faster_hexbytes/main.py", "__repr__", 73, CPyStatic_main___globals);
2127-
goto CPyL8;
2074+
goto CPyL4;
21282075
}
2129-
return cpy_r_r22;
2130-
CPyL8: ;
2131-
cpy_r_r23 = NULL;
2132-
return cpy_r_r23;
2133-
CPyL9: ;
2134-
CPy_DecRef(cpy_r_r9);
2135-
goto CPyL8;
2136-
CPyL10: ;
2137-
CPy_DecRef(cpy_r_r15);
2138-
goto CPyL8;
2076+
return cpy_r_r7;
2077+
CPyL4: ;
2078+
cpy_r_r8 = NULL;
2079+
return cpy_r_r8;
21392080
}
21402081

21412082
PyObject *CPyPy_main_____repr___3_HexBytes_obj_____call__(PyObject *self, PyObject *const *args, size_t nargs, PyObject *kwnames) {
@@ -2949,11 +2890,12 @@ const char * const CPyLit_Str[] = {
29492890
"\002\022UnicodeDecodeError\vhex string ",
29502891
"\002( may only contain [0-9a-fA-F] characters\bbinascii",
29512892
"\006\031faster_hexbytes/_utils.py\b<module>\005Final\005Union\006typing\tunhexlify",
2952-
"\b\v__getitem__\tHexBytes(\001)\rTYPE_CHECKING\bCallable\005Tuple\004Type\boverload",
2953-
"\005\rhexbytes.main\027faster_hexbytes/main.py\nmypyc_attr\017mypy_extensions\004Self",
2954-
"\005\021typing_extensions\bto_bytes\026faster_hexbytes._utils\tbytearray\tBytesLike",
2955-
"\006\a__new__\n_bytes_new\v__prepare__\fstaticmethod\b__repr__\tto_0x_hex",
2956-
"\005\n__reduce__\017__annotations__\026mypyc filler docstring\a__doc__\n__module__",
2893+
"\a\v__getitem__\fHexBytes(\'0x\002\')\rTYPE_CHECKING\bCallable\005Tuple\004Type",
2894+
"\004\boverload\rhexbytes.main\027faster_hexbytes/main.py\nmypyc_attr",
2895+
"\004\017mypy_extensions\004Self\021typing_extensions\bto_bytes",
2896+
"\005\026faster_hexbytes._utils\tbytearray\tBytesLike\a__new__\n_bytes_new",
2897+
"\005\v__prepare__\fstaticmethod\b__repr__\tto_0x_hex\n__reduce__",
2898+
"\004\017__annotations__\026mypyc filler docstring\a__doc__\n__module__",
29572899
"\001\fnative_class",
29582900
"",
29592901
};

0 commit comments

Comments
 (0)