[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-optimize
Subject: Re: QCString construction
From: David Faure <dfaure () klaralvdalens-datakonsult ! se>
Date: 2007-02-10 11:32:55
Message-ID: 200702101233.13482.dfaure () klaralvdalens-datakonsult ! se
[Download RAW message or body]
On Saturday 10 February 2007, David Faure wrote:
> Here's a benchmark I wrote which proves how much we can gain (and it also proves
> that the resulting qcstring is correct ;)
>
> Results on amd64 with -g3 and no optimization:
> QCString(char*) took 1582 milliseconds
> QCString(n)+memcpy took 134 milliseconds
> QCString()+setRawData took 31 milliseconds
>
> Results on i686 with -O2:
> QCString(char*) took 2558 milliseconds
> QCString(n)+memcpy took 161 milliseconds
> QCString()+setRawData took 35 milliseconds
I forgot to attach the benchmark - in case someone spots an error, or an even better way to do it.
--
David Faure, faure@kde.org, dfaure@klaralvdalens-datakonsult.se
KDE/KOffice developer, Qt consultancy projects
Klarälvdalens Datakonsult AB, Platform-independent software solutions
["qcstring_perf.cpp" (text/x-c++src)]
#include <qcstring.h>
#include <stdio.h>
#include <assert.h>
#include <qdatetime.h>
int main()
{
const int dataLength = 10000;
char* charData = new char[dataLength];
for ( uint i = 0; i < dataLength; ++i )
charData[i] = 'A';
charData[dataLength-1] = '\0';
int numIterations = 100000;
QTime time;
time.start();
for ( uint i = 0; i < numIterations; ++i ) {
QCString cstr = charData;
assert( cstr[0] == 'A' );
assert( cstr[dataLength-1] == '\0' );
}
int elapsed = time.elapsed();
qDebug( "QCString(char*) took %i milliseconds", time.elapsed() );
time.restart();
for ( uint i = 0; i < numIterations; ++i ) {
QCString cstr(dataLength);
memcpy( cstr.data(), charData, dataLength );
assert( cstr[0] == 'A' );
assert( cstr[dataLength-1] == '\0' );
}
qDebug( "QCString(n)+memcpy took %i milliseconds", time.elapsed() );
time.restart();
for ( uint i = 0; i < numIterations; ++i ) {
QCString cstr;
cstr.setRawData( charData, dataLength );
assert( cstr[0] == 'A' );
assert( cstr[dataLength-1] == '\0' );
cstr.resetRawData( charData, dataLength );
}
qDebug( "QCString()+setRawData took %i milliseconds", time.elapsed() );
return 0;
}
_______________________________________________
Kde-optimize mailing list
Kde-optimize@kde.org
https://mail.kde.org/mailman/listinfo/kde-optimize
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic