mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
Issue #28618: Mark dict lookup functions as hot
It's common to see these functions in the top 3 of "perf report".
This commit is contained in:
parent
d5f599a392
commit
c7a8f67411
2 changed files with 6 additions and 6 deletions
|
|
@ -498,7 +498,7 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Py_HOT_FUNCTION
|
/* _Py_HOT_FUNCTION
|
||||||
* The hot attribute on a function is used to inform the compiler that the
|
* The hot attribute on a function is used to inform the compiler that the
|
||||||
* function is a hot spot of the compiled program. The function is optimized
|
* function is a hot spot of the compiled program. The function is optimized
|
||||||
* more aggressively and on many target it is placed into special subsection of
|
* more aggressively and on many target it is placed into special subsection of
|
||||||
|
|
@ -506,7 +506,7 @@ extern "C" {
|
||||||
* locality.
|
* locality.
|
||||||
*
|
*
|
||||||
* Usage:
|
* Usage:
|
||||||
* int Py_HOT_FUNCTION x() { return 3; }
|
* int _Py_HOT_FUNCTION x() { return 3; }
|
||||||
*
|
*
|
||||||
* Issue #28618: This attribute must not be abused, otherwise it can have a
|
* Issue #28618: This attribute must not be abused, otherwise it can have a
|
||||||
* negative effect on performance. Only the functions were Python spend most of
|
* negative effect on performance. Only the functions were Python spend most of
|
||||||
|
|
|
||||||
|
|
@ -683,7 +683,7 @@ the <dummy> value.
|
||||||
For both, when the key isn't found a DKIX_EMPTY is returned. hashpos returns
|
For both, when the key isn't found a DKIX_EMPTY is returned. hashpos returns
|
||||||
where the key index should be inserted.
|
where the key index should be inserted.
|
||||||
*/
|
*/
|
||||||
static Py_ssize_t
|
static Py_ssize_t _Py_HOT_FUNCTION
|
||||||
lookdict(PyDictObject *mp, PyObject *key,
|
lookdict(PyDictObject *mp, PyObject *key,
|
||||||
Py_hash_t hash, PyObject ***value_addr, Py_ssize_t *hashpos)
|
Py_hash_t hash, PyObject ***value_addr, Py_ssize_t *hashpos)
|
||||||
{
|
{
|
||||||
|
|
@ -798,7 +798,7 @@ top:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Specialized version for string-only keys */
|
/* Specialized version for string-only keys */
|
||||||
static Py_ssize_t
|
static Py_ssize_t _Py_HOT_FUNCTION
|
||||||
lookdict_unicode(PyDictObject *mp, PyObject *key,
|
lookdict_unicode(PyDictObject *mp, PyObject *key,
|
||||||
Py_hash_t hash, PyObject ***value_addr, Py_ssize_t *hashpos)
|
Py_hash_t hash, PyObject ***value_addr, Py_ssize_t *hashpos)
|
||||||
{
|
{
|
||||||
|
|
@ -873,7 +873,7 @@ lookdict_unicode(PyDictObject *mp, PyObject *key,
|
||||||
|
|
||||||
/* Faster version of lookdict_unicode when it is known that no <dummy> keys
|
/* Faster version of lookdict_unicode when it is known that no <dummy> keys
|
||||||
* will be present. */
|
* will be present. */
|
||||||
static Py_ssize_t
|
static Py_ssize_t _Py_HOT_FUNCTION
|
||||||
lookdict_unicode_nodummy(PyDictObject *mp, PyObject *key,
|
lookdict_unicode_nodummy(PyDictObject *mp, PyObject *key,
|
||||||
Py_hash_t hash, PyObject ***value_addr,
|
Py_hash_t hash, PyObject ***value_addr,
|
||||||
Py_ssize_t *hashpos)
|
Py_ssize_t *hashpos)
|
||||||
|
|
@ -941,7 +941,7 @@ lookdict_unicode_nodummy(PyDictObject *mp, PyObject *key,
|
||||||
* Split tables only contain unicode keys and no dummy keys,
|
* Split tables only contain unicode keys and no dummy keys,
|
||||||
* so algorithm is the same as lookdict_unicode_nodummy.
|
* so algorithm is the same as lookdict_unicode_nodummy.
|
||||||
*/
|
*/
|
||||||
static Py_ssize_t
|
static Py_ssize_t _Py_HOT_FUNCTION
|
||||||
lookdict_split(PyDictObject *mp, PyObject *key,
|
lookdict_split(PyDictObject *mp, PyObject *key,
|
||||||
Py_hash_t hash, PyObject ***value_addr, Py_ssize_t *hashpos)
|
Py_hash_t hash, PyObject ***value_addr, Py_ssize_t *hashpos)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue