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