rgba.ptr[0] vs rgba[0]
Adam D. Ruppe
destructionator at gmail.com
Mon Nov 23 17:39:09 UTC 2020
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.
More information about the Digitalmars-d-learn
mailing list