I upgraded from haswell. I had a binned i7 4790k 4.8 core, 4.2 uncore, 2400 cas 10.
The reason haswell does better in some scenarios is latency. DDR3 in general has a superior performance index score.
The branch prediction is SLIGHTLY better in skylake, and DDR4 is only good if you get high performance modules. My 3400 trident Z cas 16 for example if you run it at 3333 cas 14 with 1.4v scores within a hair of 2400 cas 10 DDR3. For DDR4 that is AMAZING, so latency wont be an issue for me. This is the problem. Another one is the fact almost no one in reviews and benchmarks overclocks the memory controller, and you read advice on overclocking "core is king". Yeah it is if you are benchmarking for a score, but if you care about low framerate performance and consistent ones, and whether or not the expensive ram you installed isnt bottlenecking rediculously, this is idiotic advice. The truth is I upgraded because I was CPU bound in DX11 high resolution crysis 3 with my highly overclocked (6700mhz memory) R9 390X crossfire set up. I ordered a binned die, and had to pay a royalty to delid it to get my hands on a special order, a binned memory controller matching the core at a 1:1 ratio. 4.7 core and 4.7 uncore with EXCELLENT latency high bandwidth memory crushes haswell. Its just a premium, one I was willing to pay. Starcraft 2 is CPU bound in heavy action teamplay, so it was also a consideration. Of course most people dont know how the standard thread scheduler is introducing context switching, and people are generally too lazy to polish out OS overhead to the extent that is really possible. Take build 1511 of windows 10. Because compressing data in ram doesnt defeat the purpose of efficiency per clock......... oh, and its impossible to get rid of now, unless you can hack the kernal. Good luck. Safe mode its even running and you can no longer decompile it to remove the file forcibly. Im stuck using an older build without updates to solve it.