Hello all,

A surprise today when tweaking some code.

I have a function which takes as input an array of values (the values are a custom struct). So, in pseudocode, it's something like this:

    struct MyStruct
    {
        size_t x;
        size_t y;
        double z;
    }

    void foo(MyStruct[] input)
    {
        ...
    }

Since the input isn't modified, I thought I'd tag it as const[1]:

    void foo(const MyStruct[] input) { ... }

... but this turned out to noticeably slow down the program. (Noticeably as in, a 25-second as opposed to 23-second running time, consistently observed on repeated trials of different code versions.)

I'm surprised by this as I would have thought if anything tagging a variable as const would if anything have increased the speed, or at worst left it the same as before.

Can anyone explain why?  It's no big deal, but I'm curious.

Thanks and best wishes,

    -- Joe

-------
[1] Actually I originally tried marking it as immutable, but it turns out that's a stronger condition that doesn't just apply to what happens _inside_ the function.

Reply via email to