New issue 2887: CFFI call with bool is much slower than int
https://bitbucket.org/pypy/pypy/issues/2887/cffi-call-with-bool-is-much-slower-than
Tinho Lee:
Here is a simple test case, where *x* is a pre-compiled cffi module, and
*empty* is just a empty c function with signature *void empty(bool, bool,
bool);*.
test_a costs about 0.22s, while test_b 0.17s. It seems passing python bool to c
bool_t is slower than passing python int.
```
#!python
def test_a():
for n in xrange(10000000):
x.lib.empty(True, True, True)
def test_b():
for n in xrange(10000000):
x.lib.empty(1, 1, 1)
```
I have read the code *convert_from_object* of *W_CTypePrimitiveBool* in
ctypeprim.py, which calls *misc.as_unsigned_long* for conversion.
There is a shortcut for *W_IntObject* inside the method *as_unsigned_long*,
however, *W_BoolObject* would be treated as big int for a much slower
conversion. It seems some optimization could help to improve the performance of
passing python bool.
_______________________________________________
pypy-issue mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-issue