Anyone ?

On Wed, Jan 20, 2010 at 1:22 PM, Walter Villalba <[email protected]>wrote:

> According to the benchmarks ( from the crypto++ website and archives ),
> version 5.6.0 has better performance than 5.5.2, when using AES/CFB (see
> attached image).
>
>
I've been doing some tests and the results I'm getting do not match up with
> this.   I created a small test app which creates a 2016 char std::string,
> sets up an encryptor and decryptor with key (128 and 256 bit) and then
> enters an encryption/decryption loop.   The app only considers the time the
> program takes to execute the loop, not the initialization and set up.   I'm
> providing the source code at the end of this email.
>
> *Configuration: *
> * Microsoft Windows XP SP 2
> * Microsoft VC6 SP6
>
> I ran the app 5 times for each configuration, under similar conditions.
> All configs are in release mode, both for my app and the crypto++ library,
> and optimized for Pentium Pro.   The name states the crypto++ library
> version used, and also if using RTTI or not.
>
> Results:
>
> *128-bit key*
> Release-v5.5.2-PPro-NoRTTI
> 16 / 16 / 16 / 16 / 16
> Release-v5.5.2-PPro-RTTI
> 16 / 16 / 16 / 16 / 15
> Release-v5.6.0-PPro-NoRTTI
> "Access violation - no RTTI data!" error
> Release-v5.6.0-PPro-RTTI
> 18 / 18 / 18 / 18 / 19
>
> *256-bit key*
> Release-v5.5.2-PPro-NoRTTI
> 17 / 18 / 17 / 17 / 18 secs
> Release-v5.5.2-PPro-RTTI
> 18 / 18 / 18 / 18 / 17 secs
> Release-v5.6.0-PPro-NoRTTI
> "Access violation - no RTTI data!" error
> Release-v5.6.0-PPro-RTTI
> 21 / 21 / 20 / 21 / 21 secs
>
>
> Is there any way to use version 5.6.0 without enabling RTTI ?   I've read
> this implies extra overhead.
>
> Thanks a lot,
> Walt.
>
>
> *Source code:*
>
> // Key and IV initialization goes here
> // Key size is 16 bytes for 128-bit config, 32 bytes for 256-bit config
>
> int main(int argc, char* argv[])
> {
>     time_t startTime, finishTime;
>
>     // Message: 2016 chars (bytes)
>     std::string plainText = "123456789123....( I've shortened this string
> for this email )....6789123456789";
>
>     // Debug
>     std::cout << "Plain text: " << plainText << std::endl;
>     std::cout << "Plain text size: " << plainText.size() << " bytes." <<
> std::endl;
>
>     // Cipher and Recovered text sinks
>     std::string cipherText, recoveredText;
>
>     // Block cipher: AES
>     // Mode of operation: CFB (Cipher FeedBack)
>     CFB_Mode< AES >::Encryption encryptor;
>     CFB_Mode< AES >::Decryption decryptor;
>
>     decryptor.SetKeyWithIV( key, sizeof(key), iv );
>     encryptor.SetKeyWithIV( key, sizeof(key), iv );
>
>     // save current time just before starting the encryption/decryption
> loop
>     time( &startTime );
>
>     for ( int i = 0; i < 200000; i++ )
>     {
>         // clean up for next round
>         cipherText = "";
>         recoveredText = "";
>
>         try {
>             StringSource( plainText, true,
>                 new StreamTransformationFilter( encryptor,
>                     new StringSink( cipherText )
>                 ) // StreamTransformationFilter
>             ); // StringSource
>         } // end-try
>         catch(CryptoPP::Exception &e)
>         {
>             std::cout << e.what() << std::endl << std::endl;
>         }
>         catch(std::exception &e)
>         {
>             std::cout << e.what() << std::endl << std::endl;
>         }
>
>
>         try {
>             StringSource( cipherText, true,
>                     new StreamTransformationFilter( decryptor,
>                         new StringSink( recoveredText )
>                     ) // StreamTransformationFilter
>             ); // StringSource
>         } // end-try
>         catch(CryptoPP::Exception &e)
>         {
>             std::cout << e.what() << std::endl << std::endl;
>         }
>         catch(std::exception &e)
>         {
>             std::cout << e.what() << std::endl << std::endl;
>         }
>
>     } // end-for
>
>     // save current time just after finishing the encryption/decryption
> loop
>     time( &finishTime );
>
>     double executionTimeInSec = difftime( finishTime, startTime );
>
>     // Debug
>     //std::cout << "Cipher text: " << cipherText << std::endl;
>     //std::cout << "Cipher text size: " << cipherText.size() << " bytes."
> << std::endl;
>
>     // Debug
>     std::cout << "Recovered text: " << recoveredText << std::endl;
>     std::cout << "Recovered text size: " << recoveredText.size() << "
> bytes." << std::endl;
>
>     std::cout << "Encryption/decryption loop execution time: " <<
> executionTimeInSec << " seconds." << std::endl;
>
>     return 0;
> }
>
> ----------------------------------------------- eof.
>
>

-- 
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.

<<attachment: CryptoPP-5.5.2-5.6.0-benchmarks.png>>

Reply via email to