I was optimising some Python code, and tried the following experiment:

```
import time

start = time.clock()
x = 0
for i in range(10000000):
    x += 1
end = time.clock()

print '+=',end-start

start = time.clock()
x = 0
for i in range(10000000):
    x -= -1
end = time.clock()

print '-=',end-start

```

The second loop is reliably faster, anywhere from a whisker to 10%, depending on the system I run it on. I've tried varying the order of the loops, number of executions etc, and it still seems to work.

Stranger,

```
for i in range(10000000, 0, -1):

```

(ie running the loop backwards) is faster than

```
for i in range(10000000):

```

even when loop contents are identical.

What gives, and is there a more general programming lesson here?