The cachegrind results of primesieve and hprime to 10^9 were interesting.
Firstly it can really be seen that primesieve concentrates on reducing cache misses. The D1 misses are just 2%. Numbers wise, hprime has nearly 3 times as many D1 cache misses. One thing though is that this is only for reads and hprime actually has fewer write misses. Also, hprime has fewer references over all.
With branch mispredictions, primesieve has nearly 3 times as many branches and over 5 times as many mispredictions.
-- primesieve --
I refs: 736,461,590
I1 misses: 2,775
LLi misses: 2,455
I1 miss rate: 0.00%
LLi miss rate: 0.00%
D refs: 403,559,909 (366,095,043 rd + 37,464,866 wr)
D1 misses: 8,086,489 ( 7,491,671 rd + 594,818 wr)
LLd misses: 16,180 ( 8,440 rd + 7,740 wr)
D1 miss rate: 2.0% ( 2.0% + 1.6% )
LLd miss rate: 0.0% ( 0.0% + 0.0% )
LL refs: 8,089,264 ( 7,494,446 rd + 594,818 wr)
LL misses: 18,635 ( 10,895 rd + 7,740 wr)
LL miss rate: 0.0% ( 0.0% + 0.0% )
Branches: 101,180,663 ( 99,395,683 cond + 1,784,980 ind)
Mispredicts: 5,737,876 ( 3,971,367 cond + 1,766,509 ind)
Mispred rate: 5.7% ( 4.0% + 99.0% )
-- hprime --
I refs: 594,838,670
I1 misses: 2,055
LLi misses: 1,918
I1 miss rate: 0.00%
LLi miss rate: 0.00%
D refs: 322,949,133 (298,099,527 rd + 24,849,606 wr)
D1 misses: 21,850,722 ( 21,640,269 rd + 210,453 wr)
LLd misses: 4,368 ( 2,690 rd + 1,678 wr)
D1 miss rate: 6.8% ( 7.3% + 0.8% )
LLd miss rate: 0.0% ( 0.0% + 0.0% )
LL refs: 21,852,777 ( 21,642,324 rd + 210,453 wr)
LL misses: 6,286 ( 4,608 rd + 1,678 wr)
LL miss rate: 0.0% ( 0.0% + 0.0% )
Branches: 37,871,700 ( 37,677,506 cond + 194,194 ind)
Mispredicts: 993,423 ( 989,096 cond + 4,327 ind)
Mispred rate: 2.6% ( 2.6% + 2.2% )