Refactor performance test.

This is to allow for comparing the use of Prepared/Normal statements.

Change-Id: I6e120892f1c66f8b1c59bda309e88b2b7f39d230
This commit is contained in:
Andrzej J.R. Hunt
2013-09-18 09:42:16 +01:00
parent 7c87a5383a
commit c058510595

View File

@@ -85,6 +85,17 @@ private:
void doPerformanceTestOnODB(const OUString& rFileName, const OUString& rDBName);
void setupTestTable(uno::Reference< XConnection >& xConnection);
// Individual Tests
void performPreparedStatementInsertTest(
uno::Reference< XConnection >& xConnection,
const OUString& rDBName);
void performReadTest(
uno::Reference< XConnection >& xConnection,
const OUString& rDBName);
// Perform all tests on a given DB.
void testFirebird();
void testHSQLDB();
@@ -164,35 +175,40 @@ void EmbeddedDBPerformanceTest::doPerformanceTestOnODB(
uno::Reference< XConnection > xConnection =
getConnectionForDocument(xDocument);
// Create Table
setupTestTable(xConnection);
performPreparedStatementInsertTest(xConnection, rDBName);
performReadTest(xConnection, rDBName);
// xConnection.dispose();
}
void EmbeddedDBPerformanceTest::setupTestTable(
uno::Reference< XConnection >& xConnection)
{
uno::Reference< XStatement > xStatement = xConnection->createStatement();
CPPUNIT_ASSERT(xStatement.is());
// Although not strictly necessary we use quoted identifiers to reflect
// the fact that Base always uses quoted identifiers.
xStatement->execute(
"CREATE TABLE \"PFTESTTABLE\" ( \"ID\" INTEGER NOT NULL PRIMARY KEY "
", \"STRINGCOLUMNA\" VARCHAR (50) "
// ", \"STRINGCOLUMNB\" VARCHAR (50) "
// ", \"STRINGCOLUMNC\" VARCHAR (50) "
// ", \"STRINGCOLUMND\" VARCHAR (50) "
")");
xConnection->commit();
}
// Writing test
void EmbeddedDBPerformanceTest::performPreparedStatementInsertTest(
uno::Reference< XConnection >& xConnection,
const OUString& rDBName)
{
uno::Reference< XPreparedStatement > xPreparedStatement =
xConnection->prepareStatement(
"INSERT INTO \"PFTESTTABLE\" ( \"ID\", "
"\"STRINGCOLUMNA\" "
// ", \"STRINGCOLUMNB\" "
// ", \"STRINGCOLUMNC\" "
// ", \"STRINGCOLUMND\" "
") VALUES ( ?, ?"
// ", ?, ?, ? "
")");
") VALUES ( ?, ? )"
);
uno::Reference< XParameters > xParameters(xPreparedStatement, UNO_QUERY_THROW);
@@ -216,9 +232,6 @@ void EmbeddedDBPerformanceTest::doPerformanceTestOnODB(
{
xParameters->setInt(1, aID++);
xParameters->setString(2, aWord);
// xParameters->setString(3, aWord);
// xParameters->setString(4, aWord);
// xParameters->setString(5, aWord);
xPreparedStatement->execute();
}
osl_getSystemTime(&aMiddle);
@@ -230,13 +243,15 @@ void EmbeddedDBPerformanceTest::doPerformanceTestOnODB(
getTimeDifference(&aStart, &aMiddle, &aTimeInsert);
getTimeDifference(&aMiddle, &aEnd, &aTimeCommit);
getTimeDifference(&aStart, &aEnd, &aTimeTotal);
m_aOutputBuffer.append("Write to: " + rDBName + "\n");
m_aOutputBuffer.append("PreparedStatement Insert: " + rDBName + "\n");
printTimes(&aTimeInsert, &aTimeCommit, &aTimeTotal);
pFile->Close();
}
// Read test
void EmbeddedDBPerformanceTest::performReadTest(
uno::Reference< XConnection >& xConnection,
const OUString& rDBName)
{
uno::Reference< XStatement > xStatement = xConnection->createStatement();
@@ -252,9 +267,6 @@ void EmbeddedDBPerformanceTest::doPerformanceTestOnODB(
while (xResults->next())
{
xRow->getString(2);
// xRow->getString(3);
// xRow->getString(4);
// xRow->getString(5);
}
osl_getSystemTime(&aEnd);
@@ -265,7 +277,6 @@ void EmbeddedDBPerformanceTest::doPerformanceTestOnODB(
m_aOutputBuffer.append("Read from: " + rDBName + "\n");
printTimes(&aTimeSelect, &aTimeIterate, &aTimeTotal);
}
}
CPPUNIT_TEST_SUITE_REGISTRATION(EmbeddedDBPerformanceTest);