>> I recently sent Adam an updated version of libsha1.c, which is about >> 20% faster on x86 machines. After some more thought in this vein, I'd >> like to help write a set of "fast minting" routines which maximise >> sustained minting performance on a given class of machines. > I'd be happy to incorporate those changes in the next version. > > Re. fast SHA1 assembler tricks with MMX etc, if I recall there are some > people who have researched this and made some progress. I think some > of > their source is available (some not). You could have a look for that. Sounds encouraging. I think I at least need some pointers on how to portably insert MMX assembly into a C program - I'm presently assuming it's slightly more involved than inserting Altivec operations (which Motorola went to a great deal of trouble to make easy). At the very least, I'm aware of two completely incompatible assembler syntaxes for x86 (GNU vs. Intel - the difference is operand order), so for the moment I'll concentrate heavily on GCC syntax. In the interim, I've done some profiling of the present hashcash implementation on PowerPC, and discovered to my horror that under 2/3rds of the minting time (597 out of 904 cycles on the PPC7400 emulator, slightly worse still on a real PPC7450) was spent in the body of the SHA1_Transform() function. Eliminating the huge overhead that this reveals would result in a 50% performance boost, even with no CPU-specific optimisations. (Probably less on x86, since the hashing function takes relatively longer there, but still significant.) I'll work on refactoring first, in that light, and worry about vectorised code later. Since you seem to be in the middle of reworking the token formatting, I'll leave that part of the hashcash program alone, and merely provide an entry point, along with an example/test program for usage. -------------------------------------------------------------- from: Jonathan "Chromatix" Morton mail: chromi@xxxxxxxxxxxxxxxxxxxxx website: http://www.chromatix.uklinux.net/ tagline: The key to knowledge is not to rely on people to teach you it.