blob: 4f8b9b7723b51fb4d4f30fdbd15c0e939fa8bd6c [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 "DataInputStreamBenchmark.h"
using namespace std;
using namespace decaf;
using namespace decaf::io;
////////////////////////////////////////////////////////////////////////////////
const int DataInputStreamBenchmark::bufferSize = 200000;
////////////////////////////////////////////////////////////////////////////////
DataInputStreamBenchmark::DataInputStreamBenchmark() : buffer(), bis() {
}
////////////////////////////////////////////////////////////////////////////////
void DataInputStreamBenchmark::setUp() {
buffer = new unsigned char[bufferSize];
// init to full String Buffer
for (int ix = 0; ix < bufferSize - 1; ++ix) {
buffer[ix] = 65;
}
buffer[bufferSize - 1] = 0;
bis.setByteArray(buffer, bufferSize);
}
////////////////////////////////////////////////////////////////////////////////
void DataInputStreamBenchmark::tearDown() {
delete[] buffer;
}
////////////////////////////////////////////////////////////////////////////////
void DataInputStreamBenchmark::run() {
DataInputStream dis(&bis);
bool boolResult = 0;
char charResult = 0;
unsigned char byteResult = 0;
unsigned short ushortResult = 0;
short shortResult = 0;
int intResult = 0;
long long longResult = 0;
double doubleResult = 0.0;
float floatResult = 0.0f;
std::string stringResult = "";
for (size_t iy = 0; iy < bufferSize / sizeof(boolResult); ++iy) {
boolResult = dis.readBoolean();
}
bis.reset();
for (size_t iy = 0; iy < bufferSize / sizeof(charResult); ++iy) {
charResult = dis.readChar();
}
bis.reset();
for (size_t iy = 0; iy < bufferSize / sizeof(byteResult); ++iy) {
byteResult = (unsigned char) dis.readByte();
}
bis.reset();
for (size_t iy = 0; iy < bufferSize / sizeof(ushortResult); ++iy) {
ushortResult = dis.readUnsignedShort();
}
bis.reset();
for (size_t iy = 0; iy < bufferSize / sizeof(shortResult); ++iy) {
shortResult = dis.readShort();
}
bis.reset();
for (size_t iy = 0; iy < bufferSize / sizeof(intResult); ++iy) {
intResult = dis.readInt();
}
bis.reset();
for (size_t iy = 0; iy < bufferSize / sizeof(longResult); ++iy) {
longResult = dis.readLong();
}
bis.reset();
for (size_t iy = 0; iy < bufferSize / sizeof(floatResult); ++iy) {
floatResult = dis.readFloat();
}
bis.reset();
for (size_t iy = 0; iy < bufferSize / sizeof(doubleResult); ++iy) {
doubleResult = dis.readDouble();
}
bis.reset();
for (int i = 0; i < 5; ++i) {
stringResult = dis.readString();
bis.reset();
}
}