At tacotime's suggestion, I'm working on integrating a version (
https://code.google.com/p/primesieve) of a prime-generating table into the code, but I wasn't sure where the big time-waste was in the miner. Is it in the prime table generation, or is it more in the Weave() method? If I'm understanding it correctly, it looks like the vectors of vfCompositeCunningham1, vfCompositeCunningham2, etc are being filled with true/false values around line 553 of prime.cpp:
if (((nBiTwinSeq & 1u) == 0))
for (unsigned int nVariableMultiplier = nSolvedMultiplier; nVariableMultiplier < nSieveSize; nVariableMultiplier += nPrime)
vfCompositeCunningham1[nVariableMultiplier] = true;
How can we examine this algorithm and hopefully come up with a more optimized version? Could this not be handled by filling a with a prime table? Or is there necessary computation going on there?
Disclaimer: I'm not a strong math guy nor am I a strong C++ programmer, but I can at least look at the algorithms.