rgba.ptr[0] vs rgba[0]

visitor pierredavant at gmail.com
Mon Nov 23 18:00:13 UTC 2020


On Monday, 23 November 2020 at 17:39:09 UTC, Adam D. Ruppe wrote:
> On Monday, 23 November 2020 at 17:34:27 UTC, visitor wrote:
>> Hi all,
>>
>> I would like to know why in the code below, rgba.ptr[0] is 
>> used instead of rgba[0] and allowing the method to be @safe
>
> The .ptr[0] skips bounds checking.
>
> Since this example is static length with a constant index it 
> shouldn't matter anyway; the compiler can see it is obviously 
> in bounds and skip it too.
>
> But if there's any runtime value there's a bounds check with 
> `foo[0]` and that can be surprisingly expensive in certain 
> situations. So `foo.ptr[0]` skipping that can give a nice 
> performance boost.
>
> Just without bounds checking the code is obviously trusting the 
> programmer... hence @trusted is required instead of safe.


indeed because of the the static length and constant index, it 
was puzzling me ...
Thanks Adam for clarification


More information about the Digitalmars-d-learn mailing list