On 6/14/23 15:04, Paul wrote:

> Question: Why do you say "may be slower than necessary"?  Do you mean
> compile or runtime or both?

Definitely at compile time because the string that gets mixed-in first needs to be generated from your specification. For that, the bitfields() function must be compiled and executed at compile-time. Then the mixed-in code will be compiled. I remember reading here about lackluster compilation performance in that area.

And it may be slow at run time as well depending on certain checks the functions perform. For example, you will notice that setting the value 2 will fail at run time on a 1-bit member. If you would never pass a 2 value for such a function, than it may be seen as extra cost.

By the way, the string that bitfields() generates can be visualized by simply printing it:

    const code =
        bitfields!(
            ubyte, "A", 1,
            ubyte, "B", 1,
            ubyte, "C", 1,
            ubyte, "padding", 5,);
    writeln(code);

The output is not pretty for the human eye but those are basically the getters and setters that Adam D Ruppe mentioned.

Ali

Reply via email to