the % system is faster only in the case where there are more than two string to meld together:  a + b  == "%s%s" % (a, b)   When we have more than two, the + system gets slow because it is making multiple string copies where % makes only one.  

think of the each parenthesized expression as being another complete string copy:

    ((("a" + "b") + "c") + "d") == "a" + "b" + "c" + "d"

where as "%s%s%s%s" % ("a", "b", "c", "d") doesn't have the overhead of making all the copies.