BASELINE CLANG -------------- ~/cpython $ py -m timeit -s "from random import seed, random" -s "seed(8675309)" -s "s={random() for i in range(20)}" -s "t = {random() for i in range(20)}" "s & t" 1000000 loops, best of 3: 0.682 usec per loop ~/cpython $ py -m timeit -s "from random import seed, random" -s "seed(8675309)" -s "s={random() for i in range(20)}" -s "t = {random() for i in range(20)}" "s | t" 1000000 loops, best of 3: 0.827 usec per loop ~/cpython $ py -m timeit -s "from random import seed, random" -s "seed(8675309)" -s "s={random() for i in range(20)}" -s "t = {random() for i in range(20)}" "s & t" 1000000 loops, best of 3: 0.682 usec per loop ~/cpython $ py -m timeit -s "from random import seed, random" -s "seed(8675309)" -s "s={random() for i in range(20)}" -s "t = {random() for i in range(20)}" "s | t" 1000000 loops, best of 3: 0.827 usec per loop NEW CLANG -------------- /cpython $ py -m timeit -s "from random import seed, random" -s "seed(8675309)" -s "s={random() for i in range(20)}" -s "t = {random() for i in range(20)}" "s & t" 1000000 loops, best of 3: 0.623 usec per loop ~/cpython $ py -m timeit -s "from random import seed, random" -s "seed(8675309)" -s "s={random() for i in range(20)}" -s "t = {random() for i in range(20)}" "s | t" 1000000 loops, best of 3: 0.807 usec per loop ~/cpython $ py -m timeit -s "from random import seed, random" -s "seed(8675309)" -s "s={random() for i in range(20)}" -s "t = {random() for i in range(20)}" "s & t" 1000000 loops, best of 3: 0.625 usec per loop ~/cpython $ py -m timeit -s "from random import seed, random" -s "seed(8675309)" -s "s={random() for i in range(20)}" -s "t = {random() for i in range(20)}" "s | t" 1000000 loops, best of 3: 0.808 usec per loop Timings with larger sets ======================== seed(8675309) for n in 20900, 335000: population = [randrange(10000000) for i in range(3*n//2)] shuffle(population) s = set(population[:n]) t = set(population[n//2:]) print(min(Timer('s&t; s|t; s-t; t-s; set(list(s))', 'from __main__ import s, t').repeat(7, 400))) GCC-4.9 baseline ---------------- 1.5338349610101432 2.462629535992164 1.5513353159767576 2.5949768589925952 1.5515016150311567 2.468496468034573 1.5622391229844652 2.469042671029456 GCC-4.9 new ----------------- 1.4761750280158594 2.3660660189925693 1.4900398619938642 2.3600944520439953 1.5789572659996338 2.4605345859890804 1.512976484023966 2.358721540949773 Clang baseline -------------- 1.5522080529481173 2.675289981008973 1.570338512014132 2.559696694021113 1.5826123880106024 2.519881396961864 Clang new -------------- 1.5593804289819673 2.469807165034581 1.5455602000001818 2.4864506170270033 1.5427225360181183 2.4580939559964463