diff -r 641f389e9157 -r a71299154b21 crypto/weakcrypto/test/tbigint/tmontgomeryperformance.cpp --- a/crypto/weakcrypto/test/tbigint/tmontgomeryperformance.cpp Tue Aug 31 17:00:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,238 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - - -#include "tmontgomeryperformance.h" -#include "t_input.h" -#include "t_output.h" -#include -#include "../../source/bigint/mont.h" - -_LIT(KPerfConstFormat, "\tConstruction Time: %f us/iteration (%i iterations in %f us)\r\n"); -_LIT(KPerfMultiplyFormat, "\tMultiply Time: %f us/iteration (%i iterations in %f us)\r\n"); -_LIT(KPerfSquareFormat, "\tSquare Time: %f us/iteration (%i iterations in %f us)\r\n"); -_LIT(KPerfExpFormat, "\tExponentiate Time: %f us/iteration (%i iterations in %f us)\r\n"); -_LIT(KPerfReduceFormat, "\tReduce Time: %f us/iteration (%i iterations in %f us)\r\n"); - -CTestAction* CMontgomeryPerformance::NewL(RFs& aFs, CConsoleBase& aConsole, - Output& aOut, const TTestActionSpec& aTestActionSpec) - { - CTestAction* self = CMontgomeryPerformance::NewLC(aFs, aConsole, - aOut, aTestActionSpec); - CleanupStack::Pop(); - return self; - } - -CTestAction* CMontgomeryPerformance::NewLC(RFs& aFs, CConsoleBase& aConsole, - Output& aOut, const TTestActionSpec& aTestActionSpec) - { - CMontgomeryPerformance* self = new(ELeave) CMontgomeryPerformance(aFs, aConsole, aOut); - CleanupStack::PushL(self); - self->ConstructL(aTestActionSpec); - return self; - } - -CMontgomeryPerformance::~CMontgomeryPerformance() - { - delete iBody; - iA.Close(); - iB.Close(); - iModulus.Close(); - } - -CMontgomeryPerformance::CMontgomeryPerformance(RFs& aFs, CConsoleBase& aConsole, - Output& aOut) : CTestAction(aConsole, aOut), iFs(aFs) - { - } - -void CMontgomeryPerformance::ConstructL(const TTestActionSpec& aTestActionSpec) - { - CTestAction::ConstructL(aTestActionSpec); - iBody = HBufC8::NewL(aTestActionSpec.iActionBody.Length()); - iBody->Des().Copy(aTestActionSpec.iActionBody); - - iIterations = Input::ParseIntElement(*iBody, _L8(""), _L8("")); - - TUint bits = Input::ParseIntElement(*iBody, _L8(""), _L8("")); - - do - { - if(*((TUint*)&iModulus)) //if the size is zero, ie iModulus hasn't been initialised so don't clean it up - { - iModulus.Close(); - } - iModulus = RInteger::NewRandomL(bits); - } - while(iModulus.IsEven()); - - iA = RInteger::NewRandomL(TInteger::One(), iModulus); - iB = RInteger::NewRandomL(TInteger::One(), iModulus); - } - -void CMontgomeryPerformance::DoPerformPrerequisite(TRequestStatus& aStatus) - { - TRequestStatus* status = &aStatus; - User::RequestComplete(status, KErrNone); - iActionState = CTestAction::EAction; - } - -void CMontgomeryPerformance::DoPerformPostrequisite(TRequestStatus& aStatus) - { - TRequestStatus* status = &aStatus; - iFinished = ETrue; - User::RequestComplete(status, KErrNone); - } - -void CMontgomeryPerformance::DoReportAction(void) - { - } - -void CMontgomeryPerformance::DoCheckResult(TInt) - { - } - -void CMontgomeryPerformance::PerformAction(TRequestStatus& aStatus) - { - TRequestStatus* status = &aStatus; - iResult = ETrue; - - CMontgomeryStructure* montConst; - - TUint iterations = 0; - - TTime start, end; - TTimeIntervalSeconds diff(0); - const TTimeIntervalSeconds iterationTime(iIterations); - - start.UniversalTime(); - while (diff < iterationTime) - { - montConst = CMontgomeryStructure::NewL(iModulus); - delete montConst; - iterations++; - end.UniversalTime(); - end.SecondsFrom(start, diff); - } - end.UniversalTime(); - - TTimeIntervalMicroSeconds time = end.MicroSecondsFrom(start); - TReal rate = I64REAL(time.Int64()) / (iterations); - TReal rtime = I64REAL(time.Int64()); - HBufC* realbuf = HBufC::NewLC(128); - TPtr buf = realbuf->Des(); - buf.Format(KPerfConstFormat, rate, iterations, rtime); - iOut.writeString(buf); - iConsole.Printf(_L(".")); - - CMontgomeryStructure* mont = CMontgomeryStructure::NewLC(iModulus); - -//Multiply - diff = 0; - iterations = 0; - start.UniversalTime(); - while (diff < iterationTime) - { - mont->MultiplyL(iA, iB); - iterations++; - end.UniversalTime(); - end.SecondsFrom(start, diff); - } - end.UniversalTime(); - - time = end.MicroSecondsFrom(start); - rate = I64REAL(time.Int64()) / iterations; - rtime = I64REAL(time.Int64()); - buf.Zero(); - buf.Format(KPerfMultiplyFormat, rate, iterations, rtime); - iOut.writeString(buf); - iConsole.Printf(_L(".")); - -//Square - diff = 0; - iterations = 0; - start.UniversalTime(); - while (diff < iterationTime) - { - mont->SquareL(iA); - iterations++; - end.UniversalTime(); - end.SecondsFrom(start, diff); - } - end.UniversalTime(); - - time = end.MicroSecondsFrom(start); - rate = I64REAL(time.Int64()) / iterations; - rtime = I64REAL(time.Int64()); - buf.Zero(); - buf.Format(KPerfSquareFormat, rate, iterations, rtime); - iOut.writeString(buf); - iConsole.Printf(_L(".")); - -//Exponentiate - diff = 0; - iterations = 0; - start.UniversalTime(); - while (diff < iterationTime) - { - mont->ExponentiateL(iA, iB); - iterations++; - end.UniversalTime(); - end.SecondsFrom(start, diff); - } - end.UniversalTime(); - - time = end.MicroSecondsFrom(start); - rate = I64REAL(time.Int64()) / iterations; - rtime = I64REAL(time.Int64()); - - buf.Zero(); - buf.Format(KPerfExpFormat, rate, iterations, rtime); - iOut.writeString(buf); - iConsole.Printf(_L(".")); - -//Reduce - RInteger top = iA.TimesL(iB); - CleanupStack::PushL(top); - - diff = 0; - iterations = 0; - start.UniversalTime(); - while (diff < iterationTime) - { - mont->ReduceL(top); - iterations++; - end.UniversalTime(); - end.SecondsFrom(start, diff); - } - end.UniversalTime(); - - CleanupStack::PopAndDestroy(&top); - - time = end.MicroSecondsFrom(start); - rate = I64REAL(time.Int64()) / iterations; - rtime = I64REAL(time.Int64()); - buf.Zero(); - buf.Format(KPerfReduceFormat, rate, iterations, rtime); - iOut.writeString(buf); - iConsole.Printf(_L(".")); - CleanupStack::PopAndDestroy(mont); - CleanupStack::PopAndDestroy(realbuf); - - User::RequestComplete(status, KErrNone); - iActionState = CTestAction::EPostrequisite; - } -