blob: 9eb141229701cde8804bb25453666e5860c38b57 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "PrimitiveMapBenchmark.h"
#include <string>
#include <decaf/lang/Thread.h>
using namespace std;
using namespace activemq;
using namespace activemq::util;
////////////////////////////////////////////////////////////////////////////////
PrimitiveMapBenchmark::PrimitiveMapBenchmark() : map(), testString(), byteBuffer() {}
////////////////////////////////////////////////////////////////////////////////
PrimitiveMapBenchmark::~PrimitiveMapBenchmark() {}
////////////////////////////////////////////////////////////////////////////////
void PrimitiveMapBenchmark::setUp(){
for( int i = 0; i < 1024; ++i ) {
testString += "a";
byteBuffer.push_back( 'a' );
}
}
////////////////////////////////////////////////////////////////////////////////
void PrimitiveMapBenchmark::run() {
int numRuns = 500;
for( int i = 0; i < numRuns; ++i ){
map.setBool( "BOOL", true );
map.remove( "BOOL" );
map.setByte( "BYTE", 12 );
map.remove( "BYTE" );
map.setChar( "CHAR", 60 );
map.remove( "CHAR" );
map.setInt( "INT", 54275482 );
map.remove( "INT" );
map.setShort( "SHORT", 32767 );
map.remove( "SHORT" );
map.setLong( "LONG", 0xFFLL );
map.remove( "LONG" );
map.setDouble( "DOUBLE", 1321.1516 );
map.remove( "DOUBLE" );
map.setFloat( "FLOAT", 45.45f );
map.remove( "FLOAT" );
map.setString( "STRING", testString );
map.remove( "STRING" );
map.setByteArray( "BYTES", byteBuffer );
map.remove( "BYTES" );
}
map.setBool( "BOOL", true );
map.setByte( "BYTE", 12 );
map.setChar( "CHAR", 60 );
map.setInt( "INT", 54275482 );
map.setShort( "SHORT", 32767 );
map.setLong( "LONG", 0xFFLL );
map.setDouble( "DOUBLE", 1321.1516 );
map.setFloat( "FLOAT", 45.45f );
map.setString( "STRING", testString );
map.setByteArray( "BYTES", byteBuffer );
bool boolResult = false;
unsigned char byteResult = 0;
char charResult = 0;
short shortResult = 0;
int intResult = 0;
long long longResult = 0;
float floatResult = 0.0f;
double doubleResult = 0.0;
std::string stringResult = "";
std::vector<unsigned char> bytesResult;
for( int i = 0; i < numRuns; ++i ){
boolResult = map.getBool( "BOOL" );
CPPUNIT_ASSERT(boolResult == true);
byteResult = map.getByte( "BYTE" );
CPPUNIT_ASSERT(byteResult == 12);
charResult = map.getChar( "CHAR" );
CPPUNIT_ASSERT(charResult == 60);
intResult = map.getInt( "INT" );
CPPUNIT_ASSERT(intResult == 54275482);
shortResult = map.getShort( "SHORT" );
CPPUNIT_ASSERT(shortResult == 32767);
longResult = map.getLong( "LONG" );
CPPUNIT_ASSERT(longResult == 0xFFLL);
doubleResult = map.getDouble( "DOUBLE" );
CPPUNIT_ASSERT(doubleResult == 1321.1516);
floatResult = map.getFloat( "FLOAT" );
CPPUNIT_ASSERT(floatResult == 45.45f);
stringResult = map.getString( "STRING" );
CPPUNIT_ASSERT(stringResult == testString);
bytesResult = map.getByteArray( "BYTES" );
CPPUNIT_ASSERT(bytesResult.size() == byteBuffer.size());
}
for( int i = 0; i < numRuns; ++i ){
map.keySet();
map.values();
}
for( int i = 0; i < numRuns; ++i ){
PrimitiveMap theCopy;
theCopy.copy( map );
}
}