[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-04 Thread Georg Brandl

Changes by Georg Brandl ge...@python.org:


--
resolution:  - fixed
status: open - closed

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-03 Thread Georg Brandl

Georg Brandl added the comment:

Addressing review comments.

--
Added file: 
http://bugs.python.org/file36789/pyobject_issubclass_isinstance_speedup_v2.patch

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-03 Thread STINNER Victor

Changes by STINNER Victor victor.stin...@gmail.com:


--
nosy: +haypo

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-03 Thread Roundup Robot

Roundup Robot added the comment:

New changeset 4f33a4a2b425 by Georg Brandl in branch 'default':
Closes #22540: speed up PyObject_IsInstance and PyObject_IsSubclass in the 
common case that the second argument has metaclass type.
https://hg.python.org/cpython/rev/4f33a4a2b425

--
nosy: +python-dev
resolution:  - fixed
stage: patch review - resolved
status: open - closed

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-03 Thread STINNER Victor

STINNER Victor added the comment:

A buildbot is failing since your change.

http://buildbot.python.org/all/builders/AMD64%20Debian%20root%203.x/builds/1261/steps/test/logs/stdio

==
ERROR: test_decimal_fraction_comparison (test.test_decimal.CUsabilityTest)
--
Traceback (most recent call last):
  File 
/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/test_decimal.py, 
line 1711, in test_decimal_fraction_comparison
self.assertLess(D(0), F(1,9))
  File /root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/case.py, 
line 1174, in assertLess
if not a  b:
TypeError: unorderable types: decimal.Decimal()  Fraction()

==
FAIL: test_abc (test.test_decimal.CPythonAPItests)
--
Traceback (most recent call last):
  File 
/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/test_decimal.py, 
line 2404, in test_abc
self.assertTrue(issubclass(Decimal, numbers.Number))
AssertionError: False is not true

==
ERROR: test_mixed_comparisons (test.test_numeric_tower.ComparisonTest)
--
Traceback (most recent call last):
  File 
/root/buildarea/3.x.angelico-debian-amd64/build/Lib/test/test_numeric_tower.py,
 line 173, in test_mixed_comparisons
self.assertLess(first, second)
  File /root/buildarea/3.x.angelico-debian-amd64/build/Lib/unittest/case.py, 
line 1174, in assertLess
if not a  b:
TypeError: unorderable types: decimal.Decimal()  Fraction()

--
resolution: fixed - 
status: closed - open

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-03 Thread Antoine Pitrou

Antoine Pitrou added the comment:

The test_decimal failure can be reproduced using:

  ./python  -m test -W test_datetime test_decimal

--

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-03 Thread Roundup Robot

Roundup Robot added the comment:

New changeset 6cfe929d1de5 by Antoine Pitrou in branch 'default':
Make test_datetime a better citizen (issue #22540)
https://hg.python.org/cpython/rev/6cfe929d1de5

--

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-03 Thread Georg Brandl

Georg Brandl added the comment:

Thanks for fixing! I did run make test locally, but that did not produce the 
failure.

--

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-02 Thread Georg Brandl

New submission from Georg Brandl:

With the introduction of ABCs, PyObject_IsInstance (and for this issue, 
everything is also valid for PyObject_IsSubclass) has to check for a type's 
__instancecheck__ before falling back to the built-in behavior.

However, the type type has an __instancecheck__ method (that calls the 
built-in behavior too), probably for consistency on the Python side.

This means that the fast path is never taken, and every isinstance() call is 
slowed down unnecessarily.

This patch introduces a new fast path by checking for PyType_Type exactly 
before looking up the __instancecheck__.

It also introduces a check for exact match in PyObject_IsSubclass() analogous 
to one that is already present in PyObject_IsInstance().  Note that this will 
break __subclasscheck__ implementations that would deny issubclass(C, C).

This patch is not only useful for speeding up isinstance() and issubclass() 
calls, but also has other effects such as not slowing down the improvement of 
issue #12029.

--
components: Interpreter Core
files: pyobject_issubclass_isinstance_speedup.patch
keywords: patch
messages: 228218
nosy: georg.brandl, ncoghlan, pitrou
priority: normal
severity: normal
stage: patch review
status: open
title: speed up isinstance and issubclass for the usual cases
type: performance
versions: Python 3.5
Added file: 
http://bugs.python.org/file36781/pyobject_issubclass_isinstance_speedup.patch

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



[issue22540] speed up isinstance and issubclass for the usual cases

2014-10-02 Thread Yury Selivanov

Changes by Yury Selivanov yseliva...@gmail.com:


--
nosy: +yselivanov

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