.....
That is 4.5 Petakeys per second this will solve 64 bits in 4,094 Seconds
...
In that post I show a test solving the puzzle 70 with a single thread and near 32GB of RAM it took me 9 hrs to solve it
Ok, thanks for the answer.
On my current laptop (i7-12700H + 16GB), with my software, I can scan an
entire 2^60 range in less than 2 minutes (116 seconds), using 8 GB.
To scan the entire 2^60 range, we need to compaire 2^29 baby steps against 2^30 giant steps.
I create a table for baby steps: 2^29 elements (64 bits each: 32 bits for the private key + 32 bits for the x-coordinate) -> total 2^35 bit -> 2^32 bytes -> 4 GB;
I use 8 GB of Ram for the table (the double) to minimize collisions (half table is empty).
Then I compute 2^30 giant steps.
My program doesn't write / read on ssd.
It takes 120 seconds to compute (2^29 bs + 2^30 gs) , about 30 seconds for the table and 90 seconds to compute 2^30 elements and check in the table.
The speed to create the keys is about 2^24 keys/s, the check against the table increase the time by 50%.
To work in higher range the program needs to create multiple table; for example, to cover an
entire 2^64 range, the program splits the 2^31 baby steps in 4 table of 2^29 elements. Each table is compared against 2^32 giant steps.
So it computes: 4 * (2^29 bs + 2^32 gs) = about 16 the time to explore a 2^60 range (2^29 bs + 2^30 gs), then
32 minutes.
If I had the double of ram, I would need to compute only 2 * (2^30 bs + 2^32 gs) = about 8 the time to resolve a 2^60 range (2^29 bs + 2^30 gs) : 2minutes * 8 =
16 minutes.
In a small range, it seems the my program is faster than yours, on higher range the viceversa.