summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-08-27 09:43:17 (UTC)
committer mickeyl <mickeyl>2004-08-27 09:43:17 (UTC)
commita6e7ebcee38719a9f33ede08ed4c8a364c2ecb20 (patch) (side-by-side diff)
tree1c5674ddb8de987ac8a42d6c58597684ab1e43a4
parent2b5ae694fd875ed90c764d430891fbe4548688f2 (diff)
downloadopie-a6e7ebcee38719a9f33ede08ed4c8a364c2ecb20.zip
opie-a6e7ebcee38719a9f33ede08ed4c8a364c2ecb20.tar.gz
opie-a6e7ebcee38719a9f33ede08ed4c8a364c2ecb20.tar.bz2
adapt unit for file benchmarks, if value too high for kb/sec
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/sysinfo/benchmarkinfo.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/noncore/settings/sysinfo/benchmarkinfo.cpp b/noncore/settings/sysinfo/benchmarkinfo.cpp
index f3a6561..8497c8b 100644
--- a/noncore/settings/sysinfo/benchmarkinfo.cpp
+++ b/noncore/settings/sysinfo/benchmarkinfo.cpp
@@ -195,195 +195,209 @@ void BenchmarkInfo::run()
if ( test_alu->isOn() )
{
int d = round( dhry_main( DHRYSTONE_RUNS ) );
test_alu->setText( 1, QString().sprintf( "%d dhrys", d ) );
test_alu->setOn( false );
}
if ( test_fpu->isOn() )
{
t.start();
BenchFFT();
test_fpu->setText( 1, QString().sprintf( "%.2f secs", t.elapsed() / 1000.0 ) );;
test_fpu->setOn( false );
}
if ( test_txt->isOn() )
{
int value = textRendering( TEST_DURATION );
test_txt->setText( 1, QString().sprintf( "%d chars/sec", value / TEST_DURATION ) );
test_txt->setOn( false );
}
if ( test_gfx->isOn() )
{
int value = gfxRendering( TEST_DURATION );
test_gfx->setText( 1, QString().sprintf( "%.2f gops/sec", value / 4 / TEST_DURATION ) ); // 4 tests
test_gfx->setOn( false );
}
if ( test_ram->isOn() ) // /tmp is supposed to be in RAM on a PDA
{
performFileTest( "/tmp/benchmarkFile.dat", test_ram );
}
if ( test_cf->isOn() )
{
OStorageInfo storage;
performFileTest( storage.cfPath() + "/benchmarkFile.dat", test_cf );
}
if ( test_sd->isOn() )
{
OStorageInfo storage;
performFileTest( storage.sdPath() + "/benchmarkFile.dat", test_sd );
}
startButton->setText( tr( "&Start Tests!" ) );
}
int BenchmarkInfo::textRendering( int seconds )
{
QTime t;
t.start();
int stop = t.elapsed() + seconds * 1000;
int rr[] = { 255, 255, 255, 0, 0, 0, 0, 128, 128 };
int gg[] = { 0, 255, 0, 0, 255, 255, 0, 128, 128 };
int bb[] = { 0, 0, 255, 0, 0, 255, 255, 128, 0 };
const QString text( "Opie Benchmark Test" );
int w = QApplication::desktop()->width();
int h = QApplication::desktop()->height();
srand( time( NULL ) );
BenchmarkPaintWidget bpw;
int loops = 0;
while ( t.elapsed() < stop )
{
int k = rand() % 9;
int s = rand() % 100;
bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) );
bpw.p.setFont( QFont( "Vera", s ) );
bpw.p.drawText( rand() % w, rand() % h, text, text.length() );
++loops;
}
return loops * text.length();
}
int BenchmarkInfo::gfxRendering( int seconds )
{
int rr[] = { 255, 255, 255, 0, 0, 0, 0, 128, 128 };
int gg[] = { 0, 255, 0, 0, 255, 255, 0, 128, 128 };
int bb[] = { 0, 0, 255, 0, 0, 255, 255, 128, 0 };
int w = QApplication::desktop()->width();
int h = QApplication::desktop()->height();
srand( time( NULL ) );
BenchmarkPaintWidget bpw;
QTime t;
t.start();
int stop = t.elapsed() + seconds*1000;
int loops = 0;
while ( t.elapsed() < stop )
{
int k = rand() % 9;
bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) );
bpw.p.drawLine( rand()%w, rand()%h, rand()%w, rand()%h );
++loops;
}
t.restart();
stop = t.elapsed() + seconds*1000;
while ( t.elapsed() < stop )
{
int k = rand() % 9;
bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) );
bpw.p.drawArc( rand()%w, rand()%h, rand()%w, rand()%h, 360 * 16, 360 * 16 );
++loops;
}
QBrush br1;
br1.setStyle( SolidPattern );
t.restart();
stop = t.elapsed() + seconds*1000;
while ( t.elapsed() < stop )
{
int k = rand() % 9;
br1.setColor( QColor( rr[ k ], gg[ k ], bb[ k ] ) );
bpw.p.fillRect( rand()%w, rand()%h, rand()%w, rand()%h, br1 );
++loops;
}
QPixmap p = Resource::loadPixmap( "sysinfo/pattern" );
t.restart();
stop = t.elapsed() + seconds*1000;
while ( t.elapsed() < stop )
{
bpw.p.drawPixmap( rand()%w, rand()%h, p );
++loops;
}
return loops;
}
const unsigned int FILE_TEST_COUNT = 8000;
const unsigned int FILE_TEST_BLOCKSIZE = 1024;
void BenchmarkInfo::performFileTest( const QString& fname, OCheckListItem* item )
{
QString filename = fname == "/benchmarkFile.dat" ? QString( "/tmp/bla" ) : fname;
odebug << "performing file test on " << filename << oendl;
QString writeCommand = QString( "dd if=/dev/zero of=%1 count=%2 bs=%3 && sync" ).arg( filename )
.arg( FILE_TEST_COUNT )
.arg( FILE_TEST_BLOCKSIZE );
QString readCommand = QString( "dd if=%1 of=/dev/null count=%2 bs=%3").arg( filename )
.arg( FILE_TEST_COUNT )
.arg( FILE_TEST_BLOCKSIZE );
::system( "sync" );
odebug << "performing file test on " << filename << oendl;
int write = 0;
int read = 0;
QTime time;
time.start();
if ( ::system( writeCommand ) == 0 )
{
write = time.elapsed();
}
else
{
item->setText( 1, tr( "error" ) );
return;
}
time.restart();
if ( ::system( readCommand ) == 0 )
{
read = time.elapsed();
}
else
{
item->setText( 1, tr( "error" ) );
return;
}
QFile::remove( filename );
- item->setText( 1, QString().sprintf( "%.2f kb/s, %.2f kb/s", FILE_TEST_COUNT / ( read / 1000.0 ), FILE_TEST_COUNT / ( write / 1000.0 ) ) );
+ double readSpeed = FILE_TEST_COUNT / ( read / 1000.0 );
+ QString readUnit = "kb/s";
+ if ( readSpeed > 1024 )
+ {
+ readSpeed = readSpeed / 1024.0;
+ readUnit = "mb/s";
+ }
+ double writeSpeed = FILE_TEST_COUNT / ( write / 1000.0 );
+ QString writeUnit = "kb/s";
+ if ( writeSpeed > 1024 )
+ {
+ writeSpeed = writeSpeed / 1024.0;
+ writeUnit = "mb/s";
+ }
+ item->setText( 1, QString().sprintf( "%.2f %s, %.2f %s", readSpeed, readUnit.latin1(), writeSpeed, writeUnit.latin1() ) );
item->setOn( false );
}