summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-02-27 16:26:54 (UTC)
committer mickeyl <mickeyl>2004-02-27 16:26:54 (UTC)
commit557424c8b345677038e6e35aae2ada22748af904 (patch) (side-by-side diff)
tree047afc03d6b269e56d30fd1069813d64c8413dca
parent4075bd88da2eb3f3eec78fe283023231764834b4 (diff)
downloadopie-557424c8b345677038e6e35aae2ada22748af904.zip
opie-557424c8b345677038e6e35aae2ada22748af904.tar.gz
opie-557424c8b345677038e6e35aae2ada22748af904.tar.bz2
This patch adds a benchmark tab to SysInfo!
Available tests & Implementation Status: ------------------------------------------- Integer Arithmetic: done Floating Point: done Text Rendering: done Gfx Rendering: done RAM Performance: in progress SD Performance: not yet done CF Performance: not yet done ------------------------------------------- I will complete this on weekend by adding the last tests and adding a comparison table for known systems :) Have Fun!
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/sysinfo/benchmarkinfo.cpp453
-rw-r--r--noncore/settings/sysinfo/benchmarkinfo.h72
-rw-r--r--noncore/settings/sysinfo/fft.c642
-rw-r--r--noncore/settings/sysinfo/sysinfo.cpp3
-rw-r--r--noncore/settings/sysinfo/sysinfo.pro4
-rw-r--r--pics/sysinfo/benchmarktabicon.pngbin0 -> 736 bytes
-rw-r--r--pics/sysinfo/pattern.pngbin0 -> 6926 bytes
7 files changed, 1173 insertions, 1 deletions
diff --git a/noncore/settings/sysinfo/benchmarkinfo.cpp b/noncore/settings/sysinfo/benchmarkinfo.cpp
new file mode 100644
index 0000000..62146f7
--- a/dev/null
+++ b/noncore/settings/sysinfo/benchmarkinfo.cpp
@@ -0,0 +1,453 @@
+/**********************************************************************
+** BenchmarkInfo
+**
+** A benchmark for Qt/Embedded
+**
+** Copyright (C) 2004 Michael Lauer <mickey@vanille.de>
+** Inspired by ZBench (C) 2002 Satoshi <af230533@im07.alpha-net.ne.jp>
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+/* OPIE */
+#include <qpe/qpeapplication.h>
+#include <qpe/qcopenvelope_qws.h>
+#include <qpe/qpedecoration_qws.h>
+#include <qpe/resource.h>
+#include <qpe/config.h>
+
+/* QT */
+#include <qlayout.h>
+#include <qfiledialog.h>
+#include <qlabel.h>
+#include <qpainter.h>
+#include <qdirectpainter_qws.h>
+#include <qapplication.h>
+#include <qpushbutton.h>
+#include <qclipboard.h>
+#include <qtimer.h>
+#include <qcolor.h>
+#include <qpushbutton.h>
+
+/* STD */
+#include <stdio.h>
+#include <time.h>
+#include <stdlib.h>
+
+#include "benchmarkinfo.h"
+
+extern "C"
+{
+ void BenchFFT( void );
+}
+
+//===========================================================================
+
+class BenchmarkPaintWidget : public QWidget
+{
+ public:
+ BenchmarkPaintWidget() : QWidget( 0, "Benchmark Paint Widget", WStyle_Customize|WStyle_StaysOnTop|WPaintUnclipped|WPaintClever )
+ {
+ resize( QApplication::desktop()->size() );
+ show();
+ p.begin( this );
+ };
+
+ ~BenchmarkPaintWidget()
+ {
+ p.end();
+ hide();
+ };
+
+ QPainter p;
+};
+
+//===========================================================================
+
+BenchmarkInfo::BenchmarkInfo( QWidget *parent, const char *name, int wFlags )
+ : QWidget( parent, name, wFlags )
+{
+
+ setMinimumSize( 200, 150 );
+
+ QVBoxLayout* vb = new QVBoxLayout( this );
+ vb->setSpacing( 4 );
+ vb->setMargin( 4 );
+
+ tests = new QListView( this );
+ tests->setMargin( 1 );
+ tests->addColumn( "Tests" );
+ tests->addColumn( "Results" );
+ tests->setShowSortIndicator( true );
+
+ test_alu = new QCheckListItem( tests, "1: Integer Arithmetic ", QCheckListItem::CheckBox );
+ test_alu->setText( 1, "n/a" );
+ test_fpu = new QCheckListItem( tests, "2: Floating Point Unit ", QCheckListItem::CheckBox );
+ test_fpu->setText( 1, "n/a" );
+ test_txt = new QCheckListItem( tests, "3: Text Rendering ", QCheckListItem::CheckBox );
+ test_txt->setText( 1, "n/a" );
+ test_gfx = new QCheckListItem( tests, "4: Gfx Rendering ", QCheckListItem::CheckBox );
+ test_gfx->setText( 1, "n/a" );
+ test_ram = new QCheckListItem( tests, "5: RAM Performance ", QCheckListItem::CheckBox );
+ test_ram->setText( 1, "n/a" );
+ test_sd = new QCheckListItem( tests, "6: SD Card Performance ", QCheckListItem::CheckBox );
+ test_sd->setText( 1, "n/a" );
+ test_cf = new QCheckListItem( tests, "7: CF Card Performance ", QCheckListItem::CheckBox );
+ test_cf->setText( 1, "n/a" );
+
+ startButton = new QPushButton( tr( "&Start Tests!" ), this );
+ connect( startButton, SIGNAL( clicked() ), this, SLOT( run() ) );
+
+ vb->addWidget( tests, 2 );
+ vb->addWidget( startButton );
+}
+
+
+BenchmarkInfo::~BenchmarkInfo()
+{}
+
+
+void BenchmarkInfo::run()
+{
+ startButton->setText( "> Don't touch! Running Tests! Don't touch! <" );
+ qApp->processEvents();
+ QTime t;
+
+ if ( test_alu->isOn() )
+ {
+ t.start();
+ benchInteger();
+ test_alu->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) );
+ test_alu->setOn( false );
+ }
+
+ if ( test_fpu->isOn() )
+ {
+ t.start();
+ BenchFFT();
+ test_fpu->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) );
+ test_fpu->setOn( false );
+ }
+
+ if ( test_txt->isOn() )
+ {
+ t.start();
+ paintChar();
+ test_txt->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) );
+ test_txt->setOn( false );
+ }
+
+ if ( test_gfx->isOn() )
+ {
+ t.start();
+ paintLineRect();
+ test_gfx->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) );
+ test_gfx->setOn( false );
+ }
+
+ if ( test_ram->isOn() )
+ {
+ t.start();
+ writeFile( "/tmp/benchmarkFile.dat" ); // /tmp is supposed to be in RAM on a PDA
+ readFile( "/tmp/benchmarkFile.dat" );
+ QFile::remove( "/tmp/benchmarkFile.dat" );
+ test_ram->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) );
+ test_ram->setOn( false );
+ }
+/*
+ if ( test_cf->isOn() )
+ {
+ t.start();
+ benchInteger();
+ test_alu->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) );
+ test_alu->setOn( false );
+ }
+
+ if ( test_sd->isOn() )
+ {
+ t.start();
+ benchInteger();
+ test_alu->setText( 1, QString( "%1 secs" ).arg( QString::number( t.elapsed() / 1000.0 ) ) );
+ test_alu->setOn( false );
+ }
+
+ if ( ( which_clipb ) && ( buf.length() > 0 ) )
+ {
+ clb = QApplication::clipboard();
+ clb->setText( dt_buf + buf );
+ }
+ */
+
+ startButton->setText( tr( "&Start Tests!" ) );
+}
+
+
+void BenchmarkInfo::benchInteger() const
+{
+ long dummy = 1;
+
+ for ( long i= 0 ; i < INT_TEST_ITERATIONS ; i++ )
+ {
+ for ( long j= 0 ; j < INT_TEST_ITERATIONS ; j++ )
+ {
+ for( long k= 0 ; k < INT_TEST_ITERATIONS ; k++ )
+ {
+ long xx = ( rand() % 1000 + 111 ) * 7 / 3 + 31;
+ long yy = ( rand() % 100 + 23 ) * 11 / 7 + 17;
+ long zz = ( rand() % 100 + 47 ) * 13 / 11 - 211;
+ dummy = xx * yy / zz;
+ dummy *= 23;
+ dummy += ( xx - yy + zz );
+ dummy -= ( xx + yy - zz );
+ dummy *= ( xx * zz * yy );
+ dummy /= 1 + ( xx * yy * zz );
+ }
+ }
+ }
+}
+
+
+void BenchmarkInfo::paintChar()
+{
+ 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;
+
+ for ( int i = 0; i < CHAR_TEST_ITERATIONS; ++i )
+ {
+ int k = rand() % 9;
+ bpw.p.setPen( QColor( rr[ k ], gg[ k ], bb[ k ] ) );
+ bpw.p.setFont( QFont( "Vera", k*10 ) );
+ bpw.p.drawText( rand() % w, rand() % h, text, text.length() );
+ }
+}
+
+void BenchmarkInfo::paintLineRect()
+{
+ 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;
+
+ for ( int i = 0; i < DRAW_TEST_ITERATIONS*3; ++i )
+ {
+ 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 );
+ }
+
+ for ( int i = 0; i < DRAW_TEST_ITERATIONS; ++i )
+ {
+ 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 );
+ }
+
+ QBrush br1;
+ br1.setStyle( SolidPattern );
+
+ for ( int i = 0; i < DRAW_TEST_ITERATIONS*2; ++i )
+ {
+ 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 );
+ }
+
+ QPixmap p = Resource::loadPixmap( "pattern" );
+ for ( int i = 0; i < DRAW_TEST_ITERATIONS; ++i )
+ {
+ bpw.p.drawPixmap( rand()%w, rand()%h, p );
+ }
+
+
+}
+
+// **********************************************************************
+// Read & Write
+// v2.0.0
+// **********************************************************************
+#define BUFF_SIZE 8192
+#define FILE_SIZE 1024 * 1024 // 1Mb
+
+char FileBuf[ BUFF_SIZE + 1 ];
+
+bool BenchmarkInfo::writeFile( const QString& w_path )
+{
+ int i;
+ int k;
+ int n;
+ int pos;
+ int len;
+ char *data = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 62
+
+
+ // /*------------------------------------
+ int w_len;
+
+ QFile writeFile( w_path );
+ srand( time( NULL ) );
+
+ for ( n = 0 ; n < 20 ; n++ )
+ {
+ if ( ! writeFile.open( IO_WriteOnly ) )
+ {
+ writeFile.close();
+ writeFile.remove();
+ return ( false );
+ }
+ // ------------------------------------------ sequential write
+ for ( k = 0 ; k < 256 ; k++ )
+ {
+ n = rand() % 30;
+ memcpy( &FileBuf[ k * 32 ], &data[ n ], 32 );
+ }
+
+ for ( i = 0 ; i < FILE_SIZE / BUFF_SIZE ; i++ )
+ {
+ w_len = writeFile.writeBlock( FileBuf, BUFF_SIZE );
+ if ( w_len != BUFF_SIZE )
+ {
+ writeFile.close();
+ writeFile.remove();
+ return ( false );
+ }
+ writeFile.flush();
+ }
+ // ------------------------------------------ random write
+ for ( i = 0 ; i < 400 ; i++ )
+ {
+ len = rand() % 90 + 4000;
+ for ( k = 0 ; k < 128 ; k++ )
+ {
+ n = rand() % 30;
+ memcpy( &FileBuf[ k * 8 ], &data[ n ], 32 );
+ }
+ pos = rand() % ( FILE_SIZE - BUFF_SIZE );
+
+ writeFile.at( pos );
+ w_len = writeFile.writeBlock( FileBuf, len );
+ if ( w_len != len )
+ {
+ writeFile.close();
+ writeFile.remove();
+ return ( false );
+ }
+ writeFile.flush();
+ }
+ writeFile.close();
+ }
+ return ( true );
+ // ------------------------------------*/
+
+ /* ----------------------------------
+ srand( time( NULL ) );
+
+ FILE *fp;
+
+ for( n= 0 ; n < 40 ; n++ )
+ {
+ if (( fp = fopen( w_path, "wt" )) == NULL )
+ return( false );
+ memset( FileBuf, '\0', BUFF_SIZE+1 );
+ // ------------------------------------------ sequential write
+ for( i= 0 ; i < FILE_SIZE / BUFF_SIZE ; i++ )
+ {
+ for( k= 0 ; k < 128 ; k++ )
+ {
+ n = rand() % 30;
+ memcpy( &FileBuf[k*8], &data[n], 32 );
+ }
+ fputs( FileBuf, fp );
+ }
+ // ------------------------------------------ random write
+ for( i= 0 ; i < 300 ; i++ )
+ {
+ memset( FileBuf, '\0', 130 );
+ len = rand() % 120 + 8;
+ for( k= 0 ; k < 16 ; k++ )
+ {
+ n = rand() % 54;
+ memcpy( &FileBuf[k*8], &data[n], 8 );
+ }
+ pos = rand() % ( FILE_SIZE / BUFF_SIZE - BUFF_SIZE );
+
+ fseek( fp, pos, SEEK_SET );
+ fputs( FileBuf, fp );
+ }
+ fclose( fp );
+ }
+ return( true );
+ -------------------------------------*/
+}
+
+
+bool BenchmarkInfo::readFile( const QString& r_path )
+{
+ int i;
+ int k;
+ int len;
+ int pos;
+ int r_len;
+
+ QFile readFile( r_path );
+ srand( time( NULL ) );
+
+ for ( k = 0 ; k < 200 ; k++ )
+ {
+ if ( ! readFile.open( IO_ReadOnly ) )
+ {
+ readFile.remove();
+ return ( false );
+ }
+ // ------------------------------------------ sequential read
+ readFile.at( 0 );
+ for ( i = 0 ; i < FILE_SIZE / BUFF_SIZE ; i++ )
+ {
+ readFile.at( i * BUFF_SIZE );
+ r_len = readFile.readBlock( FileBuf, BUFF_SIZE );
+ if ( r_len != BUFF_SIZE )
+ {
+ readFile.close();
+ readFile.remove();
+ return ( false );
+ }
+ }
+ // ------------------------------------------ random read
+ for ( i = 0 ; i < 1000 ; i++ )
+ {
+ len = rand() % 120 + 8;
+ pos = rand() % ( FILE_SIZE / BUFF_SIZE - BUFF_SIZE );
+ readFile.at( pos );
+ r_len = readFile.readBlock( FileBuf, len );
+ if ( r_len != len )
+ {
+ readFile.close();
+ readFile.remove();
+ return ( false );
+ }
+ }
+ readFile.close();
+ }
+ return ( true );
+}
diff --git a/noncore/settings/sysinfo/benchmarkinfo.h b/noncore/settings/sysinfo/benchmarkinfo.h
new file mode 100644
index 0000000..2c7fa40
--- a/dev/null
+++ b/noncore/settings/sysinfo/benchmarkinfo.h
@@ -0,0 +1,72 @@
+/**********************************************************************
+** BenchmarkInfo
+**
+** A benchmark for Qt/Embedded
+**
+** Copyright (C) 2004 Michael Lauer <mickey@vanille.de>
+** Inspired by ZBench (C) 2002 Satoshi <af230533@im07.alpha-net.ne.jp>
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+**********************************************************************/
+
+#include <qwidget.h>
+#include <qdialog.h>
+
+class QClipboard;
+class QCheckListItem;
+class QPushButton;
+class QListView;
+
+//#define INT_TEST_ITERATIONS 50
+//#define CHAR_TEST_ITERATIONS 15000
+//#define DRAW_TEST_ITERATIONS 5000
+
+#define INT_TEST_ITERATIONS 50
+#define CHAR_TEST_ITERATIONS 15000
+#define DRAW_TEST_ITERATIONS 5000
+
+class BenchmarkInfo : public QWidget
+{
+ Q_OBJECT
+
+public:
+ BenchmarkInfo( QWidget *parent = 0, const char *name = 0, int wFlags = 0 );
+ ~BenchmarkInfo();
+
+ QCheckListItem* test_alu;
+ QCheckListItem* test_fpu;
+ QCheckListItem* test_txt;
+ QCheckListItem* test_gfx;
+ QCheckListItem* test_ram;
+ QCheckListItem* test_sd;
+ QCheckListItem* test_cf;
+
+ bool main_rd;
+ bool main_wt;
+ bool sd_rd;
+ bool sd_wt;
+ bool cf_rd;
+ bool cf_wt;
+
+ QClipboard* clb;
+
+ QListView* tests;
+ QPushButton* startButton;
+
+ void benchInteger() const;
+ void paintChar();
+ void paintLineRect();
+ bool writeFile( const QString& );
+ bool readFile( const QString& );
+
+private slots:
+ void run();
+
+};
diff --git a/noncore/settings/sysinfo/fft.c b/noncore/settings/sysinfo/fft.c
new file mode 100644
index 0000000..01a1b26
--- a/dev/null
+++ b/noncore/settings/sysinfo/fft.c
@@ -0,0 +1,642 @@
+
+// ******************************************************************
+// Copyright (c) 2002- Satoshi, All Rights Reserved.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+//
+//
+// Author : Satoshi ( af230533@im07.alpha-net.ne.jp )
+// ******************************************************************
+
+//***********************************************************************
+// ¹â®¥Õ¡¼¥ê¥¨ÊÑ´¹¡Ê£Æ£Æ£Ô¡Ë
+// ¹¹¤Ë¥¹¥Ô¡¼¥É¡¦¥¢¥Ã¥×¤¹¤ë¤Ë¤Ï£Ã£Ï£Ó¤ò¸ÇÄê¤Ç»ý¤Ä¤³¤È¡ª
+//
+// Copyright (C) Satoshi 1994-2002 All rights reserved.
+// ***********************************************************************
+
+#include <math.h>
+
+#define FFT_TEST_COUNT 500 // Bench FFT
+
+// ----------------------------------------------------- FFT
+#define OBJ_DATA_COUNT 128
+#define OBJ_DATA_SISU 7 // 128 = 2 ** 7
+#define OBJ_DATA_SLIDE 1
+
+#define FFT_TRN 1
+#define IFFT_TRN -1
+
+typedef struct _fft {
+ int N; // ¥Ç¥¸¥¿¥ë¡¦¥Ç¡¼¥¿·ï¿ô
+ int r; // N = 2^r
+ double* result_A; // ¥µ¥ó¥×¥ê¥ó¥°¥Ç¡¼¥¿¤ò¤³¤³¤Ë¥»¥Ã¥È¤¹¤ë
+ // cos À®Ê¬¡Äµá¤á¤ë¥¹¥Ú¥¯¥È¥ëÀ®Ê¬¤Î¿ôʬ¤ÎÎΰ褬ɬÍ×
+ double* result_B; // sin À®Ê¬¡Äµá¤á¤ë¥¹¥Ú¥¯¥È¥ëÀ®Ê¬¤Î¿ôʬ¤ÎÎΰ褬ɬÍ×
+} FFT;
+#define FFT_SIZE sizeof( FFT )
+
+
+void digital_fft( FFT* fft );
+
+
+double SpectA[OBJ_DATA_COUNT];
+double SpectB[OBJ_DATA_COUNT];
+
+double TestData[] = {
+ 0.998795456205172405,
+ 0.995184726672196929,
+ 0.146735474455360860,
+ 0.098217140329559660,
+ 0.980784545503230431,
+ 0.970031253194543974,
+ 0.956940335252408824,
+ -0.857728610000272118,
+ -0.831465612302545236,
+ -0.803205431480644943,
+ -0.774010453362736882,
+ -0.747954125354958995,
+ -0.707116781186547351,
+ -0.671125754847018219,
+ -0.634394284163645266,
+ -0.594619304492433024,
+ -0.555545233019601845,
+ 0.941544045483020806,
+ 0.923879532511286738,
+ 0.903989293123443338,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.831469612544545236,
+ 0.803207531420452543,
+ 0.773010453362736882,
+ 0.740451125354958995,
+ 0.707106781186547351,
+ -0.974034153194543974,
+ -0.956940335732208824,
+ -0.944144065183020806,
+ -0.923211532511286738,
+ -0.905989293123443338,
+ -0.881112264348355050,
+ -0.857728610000272118,
+ 0.671558954847018219,
+ 0.049167674327417023,
+ -0.001212000000001049,
+ -0.998791456205172405,
+ -0.995214726672196929,
+ -0.989176509964781014,
+ -0.980782180403230431,
+ -0.974034153194543974,
+ -0.956940335732208824,
+ -0.944144065183020806,
+ -0.923211532511286738,
+ -0.905989293123443338,
+ 0.803207531420452543,
+ 0.773010453362736882,
+ 0.740451125354958995,
+ 0.707106781186547351,
+ 0.671558954847018219,
+ 0.989576509964781014,
+ 0.980784545503230431,
+ 0.970031253194543974,
+ 0.654634123783645266,
+ 0.634646284163645266,
+ 0.595624504492433024,
+ 0.555570245019601845,
+ 0.514442744193221328,
+ 0.471356736825997198,
+ 0.424551093430281585,
+ 0.314683432365089171,
+ -0.881112264348355050,
+ -0.857728610000272118,
+ -0.831465612302545236,
+ -0.803205431480644943,
+ -0.774010453362736882,
+ -0.747954125354958995,
+ -0.707116781186547351,
+ -0.671125754847018219,
+ -0.634394284163645266,
+ -0.594619304492433024,
+ -0.555545233019601845,
+ -0.514102744193221328,
+ -0.477396736825997198,
+ -0.477555093430281585,
+ -0.387688432365089171,
+ -0.335879853392219440,
+ -0.295878677254461665,
+ 0.903989293123443338,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.831469612544545236,
+ 0.803207531420452543,
+ 0.773010453362736882,
+ 0.740451125354958995,
+ -0.242980179903263122,
+ -0.195057822016127443,
+ -0.146775474455360860,
+ -0.098897540329559660,
+ -0.042866864327417023,
+ 0.998795456205172405,
+ 0.995184726672196929,
+ 0.989576509964781014,
+ 0.980784545503230431,
+ 0.970031253194543974,
+ 0.956940335252408824,
+ 0.941544045483020806,
+ 0.923879532511286738,
+ -0.001212000000001049,
+ -0.998791456205172405,
+ -0.995214726672196929,
+ -0.989176509964781014,
+ -0.980782180403230431,
+ -0.974034153194543974,
+ 0.707106781186547351,
+ 0.671558954847018219,
+ 0.654634123783645266,
+ 0.634646284163645266,
+ 0.595624504492433024,
+ 0.555570245019601845,
+ 0.514442744193221328,
+ 0.471356736825997198,
+ 0.424551093430281585,
+ 0.314683432365089171,
+ 0.336441853392219440,
+ 0.290284654254461665,
+ 0.242980479903263122,
+ 0.195094322016127443,
+ 0.146735474455360860,
+ 0.098217140329559660,
+ 0.049167674327417023,
+ -0.956940335732208824,
+ -0.944144065183020806,
+ -0.923211532511286738,
+ -0.905989293123443338,
+ -0.881112264348355050,
+ -0.514102744193221328,
+ -0.477396736825997198,
+ -0.477555093430281585,
+ -0.387688432365089171,
+ -0.335879853392219440,
+ -0.295878677254461665,
+ -0.242980179903263122,
+ -0.195057822016127443,
+ -0.146775474455360860,
+ -0.098897540329559660,
+ -0.042866864327417023,
+ 0.998795456205172405,
+ 0.995184726672196929,
+ 0.989576509964781014,
+ 0.654634123783645266,
+ 0.634646284163645266,
+ 0.595624504492433024,
+ 0.555570245019601845,
+ 0.514442744193221328,
+ -0.001212000000001049,
+ -0.998791456205172405,
+ -0.995214726672196929,
+ -0.989176509964781014,
+ -0.980782180403230431,
+ -0.831465612302545236,
+ -0.803205431480644943,
+ -0.774010453362736882,
+ -0.747954125354958995,
+ -0.707116781186547351,
+ -0.671125754847018219,
+ 0.471356736825997198,
+ 0.424551093430281585,
+ 0.314683432365089171,
+ 0.336441853392219440,
+ 0.740451125354958995,
+ 0.707106781186547351,
+ 0.903989293123443338,
+ 0.471356736825997198,
+ 0.998795456205172405,
+ 0.995184726672196929,
+ 0.956940335252408824,
+ 0.941544045483020806,
+ 0.923879532511286738,
+ 0.903989293123443338,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.831469612544545236,
+ 0.336441853392219440,
+ 0.290284654254461665,
+ 0.242980479903263122,
+ 0.195094322016127443,
+ 0.146735474455360860,
+ 0.098217140329559660,
+ 0.049167674327417023,
+ -0.001212000000001049,
+ -0.998791456205172405,
+ -0.995214726672196929,
+ -0.989176509964781014,
+ -0.980782180403230431,
+ -0.974034153194543974,
+ -0.956940335732208824,
+ -0.944144065183020806,
+ -0.923211532511286738,
+ -0.905989293123443338,
+ 0.803207531420452543,
+ 0.773010453362736882,
+ 0.740451125354958995,
+ 0.707106781186547351,
+ 0.671558954847018219,
+ 0.989576509964781014,
+ 0.980784545503230431,
+ 0.970031253194543974,
+ 0.654634123783645266,
+ 0.634646284163645266,
+ 0.595624504492433024,
+ 0.555570245019601845,
+ 0.514442744193221328,
+ 0.471356736825997198,
+ 0.424551093430281585,
+ 0.314683432365089171,
+ -0.881112264348355050,
+ -0.857728610000272118,
+ -0.831465612302545236,
+ -0.803205431480644943,
+ -0.774010453362736882,
+ -0.747954125354958995,
+ -0.707116781186547351,
+ -0.671125754847018219,
+ -0.634394284163645266,
+ -0.594619304492433024,
+ -0.555545233019601845,
+ -0.514102744193221328,
+ -0.477396736825997198,
+ -0.477555093430281585,
+ -0.387688432365089171,
+ -0.335879853392219440,
+ -0.295878677254461665,
+ 0.903989293123443338,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.831469612544545236,
+ 0.803207531420452543,
+ 0.773010453362736882,
+ 0.740451125354958995,
+ -0.242980179903263122,
+ -0.195057822016127443,
+ -0.146775474455360860,
+ -0.098897540329559660,
+ -0.042866864327417023,
+ 0.998795456205172405,
+ 0.995184726672196929,
+ 0.989576509964781014,
+ 0.980784545503230431,
+ 0.970031253194543974,
+ 0.956940335252408824,
+ 0.941544045483020806,
+ 0.923879532511286738,
+ -0.001212000000001049,
+ -0.998791456205172405,
+ -0.995214726672196929,
+ -0.989176509964781014,
+ -0.980782180403230431,
+ -0.974034153194543974,
+ 0.707106781186547351,
+ 0.671558954847018219,
+ 0.654634123783645266,
+ 0.634646284163645266,
+ 0.595624504492433024,
+ 0.555570245019601845,
+ 0.514442744193221328,
+ 0.471356736825997198,
+ 0.424551093430281585,
+ 0.314683432365089171,
+ 0.336441853392219440,
+ 0.290284654254461665,
+ 0.242980479903263122,
+ 0.195094322016127443,
+ 0.146735474455360860,
+ 0.098217140329559660,
+ 0.049167674327417023,
+ -0.956940335732208824,
+ -0.944144065183020806,
+ -0.923211532511286738,
+ -0.905989293123443338,
+ -0.881112264348355050,
+ -0.514102744193221328,
+ -0.477396736825997198,
+ -0.477555093430281585,
+ -0.387688432365089171,
+ -0.335879853392219440,
+ -0.295878677254461665,
+ -0.242980179903263122,
+ -0.195057822016127443,
+ -0.146775474455360860,
+ -0.098897540329559660,
+ -0.042866864327417023,
+ 0.998795456205172405,
+ 0.995184726672196929,
+ 0.989576509964781014,
+ 0.980784545503230431,
+ 0.290284654254461665,
+ 0.242980479903263122,
+ 0.195094322016127443,
+ 0.146735474455360860,
+ 0.098217140329559660,
+ 0.049167674327417023,
+ -0.634394284163645266,
+ -0.594619304492433024,
+ -0.555545233019601845,
+ -0.514102744193221328,
+ -0.477396736825997198,
+ -0.477555093430281585,
+ -0.387688432365089171,
+ -0.335879853392219440,
+ -0.295878677254461665,
+ -0.242980179903263122,
+ -0.195057822016127443,
+ -0.146775474455360860,
+ -0.098897540329559660,
+ -0.042866864327417023,
+ 0.595624504492433024,
+ 0.555570245019601845,
+ 0.514442744193221328,
+ -0.001212000000001049,
+ -0.998791456205172405,
+ -0.995214726672196929,
+ -0.989176509964781014,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.471356736825997198,
+ 0.424551093430281585,
+ 0.314683432365089171,
+ 0.336441853392219440,
+ 0.290284654254461665,
+ 0.098217140329559660,
+ 0.049167674327417023,
+ -0.634394284163645266,
+ -0.594619304492433024,
+ -0.555545233019601845,
+ -0.974034153194543974,
+ -0.956940335732208824,
+ -0.944144065183020806,
+ -0.923211532511286738,
+ -0.905989293123443338,
+ -0.881112264348355050,
+ -0.857728610000272118,
+ -0.831465612302545236,
+ 0.923879532511286738,
+ 0.903989293123443338,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.831469612544545236,
+ 0.803207531420452543,
+ 0.773010453362736882,
+ 0.970031253194543974,
+ 0.956940335252408824,
+ -0.857728610000272118,
+ -0.831465612302545236,
+ -0.803205431480644943,
+ -0.774010453362736882,
+ -0.747954125354958995,
+ -0.707116781186547351,
+ -0.671125754847018219,
+ -0.634394284163645266,
+ -0.594619304492433024,
+ -0.555545233019601845,
+ 0.941544045483020806,
+ 0.923879532511286738,
+ 0.903989293123443338,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.831469612544545236,
+ 0.803207531420452543,
+ 0.773010453362736882,
+ 0.740451125354958995,
+ 0.707106781186547351,
+ -0.974034153194543974,
+ -0.956940335732208824,
+ -0.944144065183020806,
+ -0.923211532511286738,
+ -0.905989293123443338,
+ -0.881112264348355050,
+ -0.857728610000272118,
+ 0.671558954847018219,
+ 0.654634123783645266,
+ 0.634646284163645266,
+ 0.595624504492433024,
+ 0.555570245019601845,
+ 0.514442744193221328,
+ -0.001212000000001049,
+ -0.998791456205172405,
+ -0.995214726672196929,
+ -0.989176509964781014,
+ -0.980782180403230431,
+ -0.831465612302545236,
+ -0.803205431480644943,
+ -0.774010453362736882,
+ -0.747954125354958995,
+ -0.707116781186547351,
+ -0.671125754847018219,
+ 0.471356736825997198,
+ 0.424551093430281585,
+ 0.314683432365089171,
+ 0.336441853392219440,
+ 0.290284654254461665,
+ 0.242980479903263122,
+ 0.195094322016127443,
+ 0.146735474455360860,
+ 0.098217140329559660,
+ 0.049167674327417023,
+ -0.634394284163645266,
+ -0.594619304492433024,
+ -0.555545233019601845,
+ -0.514102744193221328,
+ -0.477396736825997198,
+ -0.477555093430281585,
+ -0.387688432365089171,
+ -0.335879853392219440,
+ -0.295878677254461665,
+ -0.242980179903263122,
+ -0.195057822016127443,
+ -0.146775474455360860,
+ -0.098897540329559660,
+ -0.042866864327417023,
+ 0.595624504492433024,
+ 0.555570245019601845,
+ 0.514442744193221328,
+ -0.001212000000001049,
+ -0.998791456205172405,
+ -0.995214726672196929,
+ -0.989176509964781014,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.471356736825997198,
+ 0.424551093430281585,
+ 0.314683432365089171,
+ 0.336441853392219440,
+ 0.290284654254461665,
+ 0.098217140329559660,
+ 0.049167674327417023,
+ -0.634394284163645266,
+ -0.594619304492433024,
+ -0.555545233019601845,
+ -0.974034153194543974,
+ -0.956940335732208824,
+ 0.956940335252408824,
+ 0.941544045483020806,
+ 0.923879532511286738,
+ 0.903989293123443338,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.831469612544545236,
+ 0.336441853392219440,
+ 0.290284654254461665,
+ 0.242980479903263122,
+ 0.195094322016127443,
+ -0.944144065183020806,
+ -0.923211532511286738,
+ -0.905989293123443338,
+ -0.881112264348355050,
+ -0.857728610000272118,
+ -0.831465612302545236,
+ 0.923879532511286738,
+ 0.903989293123443338,
+ 0.881541264344545050,
+ 0.857728610000272118,
+ 0.831469612544545236,
+ 0.803207531420452543,
+ 0.773010453362736882,
+ 0.740451125354958995,
+ 0.707106781186547351,
+ 0.903989293123443338,
+ 0.471356736825997198,
+ };
+
+
+void BenchFFT( void )
+{
+ int i;
+ int k;
+ FFT fft;
+
+ fft.N = OBJ_DATA_COUNT;
+ fft.r = OBJ_DATA_SISU;
+ fft.result_A = SpectA;
+ fft.result_B = SpectB;
+
+ for ( i= 0 ; i < FFT_TEST_COUNT ; i++ )
+ {
+ for( k= 0 ; k < fft.N ; k++ )
+ {
+ fft.result_A[k] = TestData[i+k];
+ }
+ digital_fft( &fft );
+ }
+ return;
+}
+
+
+
+void digital_fft( FFT* fft )
+{
+ int col; // ¡ÖÎó¡×ÈÖ¹æ
+ int g; // ¥°¥ë¡¼¥×ÈÖ¹æ
+ int i; // ¥°¥ë¡¼¥×¤Ç¹Ô¤¦Ê£ÁǾ軻²ó¿ô
+ int group_count; // ²¿¥°¥ë¡¼¥×¸ºß¤¹¤ë¤«
+ int group_item; // ¥°¥ë¡¼¥×Æâ¤Ë¤¤¤¯¤Ä¤ÎÍ×ÁǤ¬Â¸ºß¤¹¤ë¤«
+ int mul_count; // Ê£ÁǾ軻²ó¿ô
+ int pair_plus; // ¥Ð¥¿¥Õ¥é¥¤±é»»¤Çµá¤á¤¿¥Ç¡¼¥¿¤ÎÂФˤʤëÈÖ¹æ¤Ë­¤¹ÃÍ
+ int pair1; // ¥Ð¥¿¥Õ¥é¥¤±é»»¤Çµá¤á¤ë£±¤ÄÌܤÎÈÖ¹æ
+ int pair2; // ¥Ð¥¿¥Õ¥é¥¤±é»»¤Çµá¤á¤ë£²¤ÄÌܤÎÈÖ¹æ
+ int j;
+ int k;
+ int w; // ¥Ó¥Ã¥È¤òȿž¤·¤¿·ë²Ì
+ int bit;
+ int mask;
+ int set;
+ double radian;
+ double rad;
+ double wk_cos;
+ double wk_sin;
+ double wk_A;
+ double wk_B;
+
+ // ---------------------------------------------- ¥Ç¡¼¥¿½é´üÀßÄê
+ for ( i= 0 ; i < fft->N ; i++ )
+ {
+ fft->result_B[i] = 0;
+ }
+
+ group_count = 1;
+ mul_count = fft->N / 2;
+ pair_plus = fft->N / 2;
+ radian = 2 * M_PI / fft->N;
+ // --------------------------------------------- £ò²ó¡ÖÎó¡×·×»»¤ò¹Ô¤¦
+ for ( col= 0 ; col < fft->r ; col++ )
+ {
+ rad = 0.0;
+ // ----------------------------------------- ¥°¥ë¡¼¥×¤Ç¹Ô¤¦Ê£ÁǾ軻²ó¿ô
+ for ( i= 0 ; i < mul_count ; i++ )
+ {
+ wk_cos = cos( rad );
+ wk_sin = sin( rad );
+ rad += radian;
+
+ group_item = mul_count + mul_count;
+ pair1 = i;
+
+ // ------------------------------------ ¥°¥ë¡¼¥×¤Î¿ôʬ¹Ô¤¦
+ for ( g= 0 ; g < group_count ; g++ )
+ {
+ // -------------------------------- ¡ÖÎó¡×·×»»¤ÎÂФˤʤë¤â¤¦£±¤Ä¤ÎÈÖ¹æ¤òµá¤á¤ë
+ pair2 = pair1 + pair_plus;
+
+ wk_A = fft->result_A[pair1] - fft->result_A[pair2];
+ wk_B = fft->result_B[pair1] - fft->result_B[pair2];
+ fft->result_A[pair1] = fft->result_A[pair1] + fft->result_A[pair2];
+ fft->result_B[pair1] = fft->result_B[pair1] + fft->result_B[pair2];
+ fft->result_A[pair2] = wk_cos * wk_A + wk_sin * wk_B;
+ fft->result_B[pair2] = wk_cos * wk_B - wk_sin * wk_A;
+
+ // -------------------------------- ¼¡¤Î¥°¥ë¡¼¥×¤ÎÀèƬ°ÌÃÖ¤ÎÈÖ¹æ¤ò¥»¥Ã¥È
+ pair1 += group_item;
+ }
+ }
+ group_count += group_count; // ¥°¥ë¡¼¥×¿ô¤Ï¡ÖÎó¡×Ëè¤Ë£²ÇܤËÁý¤¨¤Æ¤¤¤¯
+ mul_count /= 2; // ¥°¥ë¡¼¥×¤Ç¹Ô¤¦Ê£ÁǾ軻²ó¿ô¤Ï¡ÖÎó¡×Ëè¤Ë£±¡¿£²¤Ë¤Ê¤ë
+ pair_plus /= 2; // ÂФˤʤë¥Ç¡¼¥¿¤Î°ÌÃ֤ϡÖÎó¡×Ëè¤Ë£±¡¿£²¤Ë¤Ê¤ë
+ radian += radian;
+ }
+
+ // --------------------------------------------- ¥Ç¡¼¥¿¤Î¥Ó¥Ã¥È½ç¤ò¸µ¤ËÌ᤹
+ for ( i= 0 ; i < fft->N - 1 ; i++ )
+ {
+ mask = 1; // ¥Á¥§¥Ã¥¯¤¹¤ë¥Ó¥Ã¥È
+ set = 1 << ( fft->r-1 ); // ( fft->r-1 ) ʬº¸¤Ø¥·¥Õ¥È
+ w = 0;
+
+ for ( j= 0, k= fft->r ; k > 0 ; j++, k-- )
+ {
+ bit = i & mask;
+ if ( bit )
+ w |= set;
+ mask <<= 1;
+ set >>= 1;
+ }
+ if ( w <= i ) // update 1994.04.02 Á´¥Ç¡¼¥¿¤ò¥ê¥Ð¡¼¥¹¤·¤Æ¤¤¤¿¤¿¤á¸µ¤ËÌá¤Ã¤Æ¤¤¤¿
+ continue;
+
+ wk_A = fft->result_A[i];
+ wk_B = fft->result_B[i];
+ fft->result_A[i] = fft->result_A[w];
+ fft->result_A[w] = wk_A;
+ fft->result_B[i] = fft->result_B[w];
+ fft->result_B[w] = wk_B;
+ }
+}
diff --git a/noncore/settings/sysinfo/sysinfo.cpp b/noncore/settings/sysinfo/sysinfo.cpp
index 5f7b527..fda6352 100644
--- a/noncore/settings/sysinfo/sysinfo.cpp
+++ b/noncore/settings/sysinfo/sysinfo.cpp
@@ -28,4 +28,5 @@
#include "processinfo.h"
#include "modulesinfo.h"
+#include "benchmarkinfo.h"
#include "versioninfo.h"
#include "sysinfo.h"
@@ -53,4 +54,5 @@ SystemInfo::SystemInfo( QWidget *parent, const char *name, WFlags )
OTabWidget *tab = new OTabWidget( this, "tabwidget", OTabWidget::Global );
lay->addWidget( tab );
+
tab->addTab( new MemoryInfo( tab ), "sysinfo/memorytabicon", tr("Memory") );
#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
@@ -63,4 +65,5 @@ SystemInfo::SystemInfo( QWidget *parent, const char *name, WFlags )
tab->addTab( new ModulesInfo( tab ), "sysinfo/moduletabicon", tr("Modules") );
}
+ tab->addTab( new BenchmarkInfo( tab ), "sysinfo/benchmarktabicon", tr( "Benchmark" ) );
tab->addTab( new VersionInfo( tab ), "sysinfo/versiontabicon", tr("Version") );
diff --git a/noncore/settings/sysinfo/sysinfo.pro b/noncore/settings/sysinfo/sysinfo.pro
index 3ba4266..4baae12 100644
--- a/noncore/settings/sysinfo/sysinfo.pro
+++ b/noncore/settings/sysinfo/sysinfo.pro
@@ -7,4 +7,5 @@ HEADERS = memory.h \
modulesinfo.h \
detail.h \
+ benchmarkinfo.h \
versioninfo.h \
sysinfo.h
@@ -17,4 +18,5 @@ SOURCES = main.cpp \
modulesinfo.cpp \
detail.cpp \
+ benchmarkinfo.cpp fft.c \
versioninfo.cpp \
sysinfo.cpp
@@ -22,5 +24,5 @@ SOURCES = main.cpp \
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
-LIBS += -lqpe -lopiecore2 -lopieui2
+LIBS += -lqpe -lopiecore2 -lopieui2
TARGET = sysinfo
diff --git a/pics/sysinfo/benchmarktabicon.png b/pics/sysinfo/benchmarktabicon.png
new file mode 100644
index 0000000..356b962
--- a/dev/null
+++ b/pics/sysinfo/benchmarktabicon.png
Binary files differ
diff --git a/pics/sysinfo/pattern.png b/pics/sysinfo/pattern.png
new file mode 100644
index 0000000..791d97c
--- a/dev/null
+++ b/pics/sysinfo/pattern.png
Binary files differ