[issue42927] Inline cache for slots

2021-01-31 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:


New changeset a776da90b8f2a1342f4f9bfd23a62cea9a0497c6 by Pablo Galindo in 
branch 'master':
bpo-42927: Update the What's new entry for LOAD_ATTR optimizations (GH-24383)
https://github.com/python/cpython/commit/a776da90b8f2a1342f4f9bfd23a62cea9a0497c6


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-29 Thread Pablo Galindo Salgado


Change by Pablo Galindo Salgado :


--
pull_requests: +23199
pull_request: https://github.com/python/cpython/pull/24383

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-29 Thread Guido van Rossum


Change by Guido van Rossum :


--
resolution:  -> fixed
stage: patch review -> commit review
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-29 Thread Guido van Rossum


Guido van Rossum  added the comment:


New changeset 5c5a938573ce665f00e362c7766912d9b3f3b44e by Guido van Rossum in 
branch 'master':
bpo-42927: Inline cache for attributes defined with '__slots__' (#24216)
https://github.com/python/cpython/commit/5c5a938573ce665f00e362c7766912d9b3f3b44e


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-15 Thread Guido van Rossum


Guido van Rossum  added the comment:

I created a benchmark for this, see 
https://github.com/python/pyperformance/pull/86.

Next I'll add a blurb and then it's off to reviewers.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-15 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:

> What is the next step?

I would say just finishing the PR (making sure that we do not miss some arcane 
edge case) and updating the what's new for 3.10 :)

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Guido van Rossum


Guido van Rossum  added the comment:

Thanks for all the positive feedback! What is the next step?

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Raymond Hettinger


Raymond Hettinger  added the comment:

+1 Thanks for this.

--
nosy: +rhettinger

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Batuhan Taskaya


Change by Batuhan Taskaya :


--
nosy: +BTaskaya

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:

> This is a great result, IMO. I'm +1 to merge this.

Same here. It would be good if Inada-san could confirm the benchmarks.

> Can you add a new one `read_slots`?

That should be "read_instancevar_slots". Or you refer to some other check?

--
nosy: +methane

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Yury Selivanov


Yury Selivanov  added the comment:

> Some microbenchmarks:


Can you add a new one `read_slots`?

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Yury Selivanov


Yury Selivanov  added the comment:

> So it seems that everything is in the noise range except the "float" 
> benchmark that is 1.11x faster

Yeah, this is why. 
https://github.com/python/pyperformance/blob/master/pyperformance/benchmarks/bm_float.py#L12

This is a great result, IMO. I'm +1 to merge this.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:

Some microbenchmarks:

CURRENT MASTER:

Variable and attribute read access:
   4.5 ns   read_local
   5.8 ns   read_nonlocal
   7.8 ns   read_global
   7.8 ns   read_builtin
  21.2 ns   read_classvar_from_class
  19.1 ns   read_classvar_from_instance
  16.4 ns   read_instancevar
  23.6 ns   read_instancevar_slots
  20.2 ns   read_namedtuple
  40.5 ns   read_boundmethod

PR 24216

Variable and attribute read access:
   4.5 ns   read_local
   5.8 ns   read_nonlocal
   7.8 ns   read_global
   8.2 ns   read_builtin
  21.4 ns   read_classvar_from_class
  19.0 ns   read_classvar_from_instance
  16.6 ns   read_instancevar
  10.2 ns   read_instancevar_slots
  20.5 ns   read_namedtuple
  42.9 ns   read_boundmethod

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:

So it seems that everything is in the noise range except the "float" benchmark 
that is 1.11x faster

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Pablo Galindo Salgado

Pablo Galindo Salgado  added the comment:

These are the results:

venv ❯ python -m pyperf compare_to json_old/* -G --min-speed=2 --table
+-+--+--+
| Benchmark   | 2021-01-14_09-40-master-14cfa325c298 | 
2021-01-14_10-39-slotscache-9123a84ad8d4 |
+=+==+==+
| float   | 148 ms   | 133 ms: 1.11x 
faster |
+-+--+--+
| pidigits| 265 ms   | 252 ms: 1.05x 
faster |
+-+--+--+
| scimark_monte_carlo | 130 ms   | 126 ms: 1.03x 
faster |
+-+--+--+
| spectral_norm   | 168 ms   | 164 ms: 1.03x 
faster |
+-+--+--+
| logging_silent  | 221 ns   | 216 ns: 1.02x 
faster |
+-+--+--+
| sympy_expand| 598 ms   | 585 ms: 1.02x 
faster |
+-+--+--+
| regex_v8| 31.9 ms  | 32.6 ms: 1.02x 
slower|
+-+--+--+
| deltablue   | 8.93 ms  | 9.16 ms: 1.03x 
slower|
+-+--+--+
| unpickle| 17.0 us  | 17.7 us: 1.04x 
slower|
+-+--+--+
| Geometric mean  | (ref)| 1.00x faster 
|
+-+--+--+

Benchmark hidden because not significant (50): sympy_sum, 
sqlalchemy_imperative, sympy_str, sympy_integrate, dulwich_log, scimark_fft, 
genshi_text, tornado_http, regex_dna, sqlalchemy_declarative, mako, 
meteor_contest, unpickle_pure_python, xml_etree_parse, genshi_xml, scimark_sor, 
sqlite_synth, pickle_pure_python, nbody, pickle_dict, pyflate, regex_effbot, 
xml_etree_process, logging_simple, python_startup, 2to3, fannkuch, 
python_startup_no_site, raytrace, go, hexiom, scimark_lu, json_dumps, richards, 
logging_format, xml_etree_generate, chaos, telco, pickle_list, unpack_sequence, 
regex_compile, django_template, json_loads, crypto_pyaes, xml_etree_iterparse, 
unpickle_list, nqueens, chameleon, scimark_sparse_mat_mult, pickle
Ignored benchmarks (1) of 
json_old/2021-01-14_09-40-master-14cfa325c298.json.gz: pathlib


I uploaded the pyperf result data to bpo as well

--
Added file: https://bugs.python.org/file49744/result2.zip

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Pablo Galindo Salgado


Pablo Galindo Salgado  added the comment:

I will try to run today the pyperformance test suite to see if there is any 
impact on standard attribute access

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-14 Thread Serhiy Storchaka


Serhiy Storchaka  added the comment:

Slot means so many different things in Python. Here it's about data descriptors 
created when you set __slots__ in the class definition.

It is amazing that so large speed up can be achieved for such base operation.

--
nosy: +serhiy.storchaka

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-13 Thread Guido van Rossum


Change by Guido van Rossum :


--
keywords: +patch
pull_requests: +23043
stage: test needed -> patch review
pull_request: https://github.com/python/cpython/pull/24216

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue42927] Inline cache for slots

2021-01-13 Thread Guido van Rossum


New submission from Guido van Rossum :

I've been thinking about Python performance improvements, and I played around 
with an inline cache enhancement that supports slots. The results on a very 
simple benchmark look promising (30% speedup) but I'm terrible with our 
benchmarking tools, and this should be considered *very* carefully before we go 
ahead with it, since it could potentially pessimize the inline cache for 
standard attributes.

I'll attach a PR in a minute.

--
messages: 385063
nosy: gvanrossum, pablogsal, yselivanov
priority: normal
severity: normal
stage: test needed
status: open
title: Inline cache for slots
type: performance
versions: Python 3.10

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com