[Python-Dev] cpython: Improve struct cache locality by bring commonly accessed fields close together.

Antoine Pitrou solipsis at pitrou.net
Fri Feb 20 11:47:09 CET 2015


On Fri, 20 Feb 2015 08:50:10 +0000
raymond.hettinger <python-checkins at python.org> wrote:
> https://hg.python.org/cpython/rev/0ba4bcc0a7a6
> changeset:   94696:0ba4bcc0a7a6
> user:        Raymond Hettinger <python at rcn.com>
> date:        Fri Feb 20 00:50:04 2015 -0800
> summary:
>   Improve struct cache locality by bring commonly accessed fields close together.
> 
> files:
>   Modules/_randommodule.c |  2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
> 
> 
> diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c
> --- a/Modules/_randommodule.c
> +++ b/Modules/_randommodule.c
> @@ -78,8 +78,8 @@
>  
>  typedef struct {
>      PyObject_HEAD
> +    int index;
>      unsigned long state[N];
> -    int index;
>  } RandomObject;

I may be missing something something, but I don't see how that improves
cache locality. The index is only ever looked up when the state is also
looked up, and since the state is used sequentially there are equal
chances for the state lookup to be near the end rather than near the
front.

Regards

Antoine.




More information about the Python-Dev mailing list