Chiefly, just using fewer pointers. That is, turn<p><pre><code>    struct foo {
        struct bar *bar;
        struct baz *baz;
    }
</code></pre>
into<p><pre><code>    struct foo {
        struct bar bar;
        struct baz baz;
    }
</code></pre>
Of course, this is not always possible - but a C program written naively&#x2F;for encapsulation&#x2F;flexibly tends to have a lot of places where you can perform such an optimization.<p>The performance win, on modern platforms, comes chiefly from reducing the number of (unpredictable&#x2F;non-cached) pointer dereferences.