Take the 2-minute tour ×
Bitcoin Stack Exchange is a question and answer site for Bitcoin crypto-currency enthusiasts. It's 100% free, no registration required.

Assuming:

  • An average modern computer
  • Using a single thread, as the current Satoshi client does
  • Using the OpenSSL library, as the Satoshi Bitcoin client does
  • The signature is not in the signature cache

I speculate that the time may be between 1 and 10 msec.

share|improve this question
add comment

2 Answers 2

up vote 4 down vote accepted

It depends a lot on the hardware, and on the architecture. OpenSSL use some assembly-optimized routines, which result in a speed factor of +- x2 between 32 bit and 64 bit (the latter is faster). That said, I've seen verifications taking around 0.47 ms on an Intel Xeon E5-1650 @ 3.20GHz, using 64-bit code.

Also, version 0.8 will actually do signature verification in parallel. There is also a patch with an optimized ECDSA verifier for the specific curve we're using, which should give a 20% speedup (discovered by Hal Finney). This patch will probably not make it into v0.8, though.

share|improve this answer
add comment

I instrumented the Satoshi client to see hwo long a transaction verification takes. This includes the signature verification, but is probably more of an upper bound as it also includes several disk seeks.

Transaction verification time

4500 Transactions. With the following percentiles:

  • 50 percentile 5.0
  • 75 percentile 10.0
  • 85 percentile 15.0
  • 95 percentile 36.0
  • 99 percentile 207.27

While not at all representative it would point towards your estimate being correct.

Note: this was taken on a Lenovo T420 with spinning disks.

share|improve this answer
    
Just testing the digital signature verification using the OpenSSL code on a single core of a Core 2 Q9550, I get 725 microseconds per verification, a shade under 1 millisecond. This may be a bit unrealistic because all the ECDSA code is hot in the cache and the branch prediction is primed. (Test was doing verifications in a tight loop.) –  David Schwartz Jan 31 '13 at 21:21
2  
The 0.8 code (unreleased currently) has a -benchmark function which measures block connection and signature verifications. You are certainly not just measuring signature validation. –  Pieter Wuille Jan 31 '13 at 22:23
    
Yep, I needed the benchmark for something else, where the whole processing time of transactions was more relevant. –  cdecker Feb 1 '13 at 8:56
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.