On Sat, Sep 25, 2010 at 1:15 AM, Kay Hayen <[email protected]> wrote:
>
> Hello Robert,
>
>>> there wasn't much else I could try. so is that all?
>>
>> In general, there aren't dozens of knobs to twiddle like there are
>> with most compilers.
>>
>> There are a couple of directives at
>> http://wiki.cython.org/enhancements/compilerdirectives that might make
>> a difference.
>
> Ah my bad, I searched for "Options". Might be a good idea to make these
> a bit more prominent.

Seconded.

>> For example, setting boundscheck and wraparound to False
>> will make things faster (removing the checks for negative and
>> out-of-bounds access of course), and infer_types=True (again, this
>> creates semantic changes, as integer literals will be inferred to be C
>> ints and thus might overflow). And I'd imagine that 0.13 will be an
>> improvement over 0.12, at least for some things.
>
> Thanks for the pointers, I believe I will use these sets then:
>
> compatability:
> infer_types = True   # speed
> nonecheck = True     # CPython compatability
> wraparound = True    # CPython compatability
> boundscheck = True   # CPython compatability
> cdivision = True     # CPython compatability
>
> speed:
> infer_types = True
> nonecheck = False
> wraparound = False
> boundscheck = False
> cdivision = False

cdivision=False is the CPython compatibility mode (as cdivision=True
does C division rather than Python division). Other than that, it
looks good. I wouldn't expect too much of a difference as most of
these directives control overheads that are negligible when one is
manipulating a lot of Python objects (but important when everything is
pure C.)

>  >> And then what to use for gcc (the C/C++ compiler of choice or is any
>>> other working for you better on Linux), simply -O3 and be done with it?
>>
>> That's all I do, but there's a lot of options to try, so it'd be
>> interesting to see if any make a noticeable impact. (Same with
>> comparing various compilers.)
>
> I will play around for sure.
>
>>> Or is there any experience indicating that some special options will
>>> give measurable improvements?
>>>
>>> Obviously I would like to first use the correct options and only then
>>> publish results. So please let me know. :-)
>>
>> It should be noted that most of the effort has gone into making
>> *annotated* code fast, as most users care more about a 100x speedup
>> with a little bit of work than a 2x speedup for free.
>
> I will always make that clear when posting results, Robert. I am a
> minority. Using the above option set "compatability" indicates that already.
>
> I am not not against annotations at all, I just believe they should be
> in Python and ideally do a check in Python too. And initially I want to
> stretch the borders of what's possible with automatic type inference or
> guessing.
>
> Thanks for this, I will come back with results then. I will include 2
> sets of cython directives, aggressive and compatability and see how far
> I get with that.

Looking forward to seeing the results.

- Robert
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to