Perhaps there is a rule of thumb out there - you should be getting x nps for each GHz, or something like that..
My machine is a 2 year old Sony VAIO laptop, running 32-bit Windows Vista, Intel Core 2 CPU, T5600, 1.83 Ghz, 2 GB RAM.
My engine is written in VB.NET, which is a compiled language. It's not the old interpreted Basic. It's compiled.
I use a 128 MB hash, and I use 1d array with "border squares" for the board (array of piece indeces to a piece list), pseudo-legal move generation, PVS, null-move, killers, history heuristic, ID with aspiration windows, IID, MVV/LVA, check extension, piece square tables, and a rather simple eval function. I presently have no SEE, and no futiliity pruning of any kind, no lazy eval, no LMR. Also, I fail hard, not soft. No pondering.
Also, my engine runs on a separate thread from my own GUI. But, the engine itself does not split the tree among multiple threads.
If I include hash hits in the node count (which most of you seem to be doing), I am getting roughly 450,000 to 650,000 nps, depending upon the position, but more usually around 500,000 nps. In that famous Fine's Chess endings high-hash position with all the locked pawns, I solve a depth 26 search (includes depth 1-25, too) in less than half a second (.497 sec), and the nps in that startup position is just over 500,000 nps.
Given the parameters of my hardware and engine, does that seem reasonable? Or have I just publicly humiliated myself?
