<p>In Perl, a conditional can be expressed either as</p>

<pre><code>if (condition) { do something }
</code></pre>

<p>or as</p>

<pre><code>(condition) and do { do something }
</code></pre>

<p>Interestingly, the second way seems to be about 10% faster. Does anyone know why?</p>

I've deparsed it, and it really shouldn't be faster. The opcode tree for the first is
```
```
LISTOP (0x8177a18) leave [1] 
    OP (0x8176590) enter 
    COP (0x8177a40) nextstate 
    LISTOP (0x8177b20) scope 
        OP (0x81779b8) null [174] 
        UNOP (0x8177c40) dofile 
            SVOP (0x8177b58) const [1] PV (0x81546e4) "something"
```
```
The opcode tree for the second is
```
```
LISTOP (0x8177b28) leave [1] 
    OP (0x8176598) enter 
    COP (0x8177a48) nextstate 
    UNOP (0x8177980) null 
        LISTOP (0x8177ca0) scope 
            OP (0x81779c0) null [174] 
            UNOP (0x8177c48) dofile 
                SVOP (0x8177b60) const [1] PV (0x81546e4) "something"
```
```
I really don't see how the latter could be faster. It does an opcode more!