Chris@1622: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@1622: Chris@1622: /* Chris@1622: Sonic Visualiser Chris@1622: An audio file viewer and annotation editor. Chris@1622: Centre for Digital Music, Queen Mary, University of London. Chris@1622: Chris@1622: This program is free software; you can redistribute it and/or Chris@1622: modify it under the terms of the GNU General Public License as Chris@1622: published by the Free Software Foundation; either version 2 of the Chris@1622: License, or (at your option) any later version. See the file Chris@1622: COPYING included with this distribution for more information. Chris@1622: */ Chris@1622: Chris@1622: #ifndef STRESS_EVENT_SERIES_H Chris@1622: #define STRESS_EVENT_SERIES_H Chris@1622: Chris@1622: #include "../EventSeries.h" Chris@1622: Chris@1622: #include Chris@1622: #include Chris@1622: Chris@1622: #include Chris@1622: Chris@1622: using namespace std; Chris@1622: Chris@1622: class StressEventSeries : public QObject Chris@1622: { Chris@1622: Q_OBJECT Chris@1622: Chris@1622: private: Chris@1622: void report(int n, QString sort, clock_t start, clock_t end) { Chris@1622: QString message = QString("Time for %1 %2 events = ").arg(n).arg(sort); Chris@1622: cerr << " " << message; Chris@1622: for (int i = 0; i < 34 - message.size(); ++i) cerr << " "; Chris@1622: cerr << double(end - start) * 1000.0 / double(CLOCKS_PER_SEC) Chris@1622: << "ms" << endl; Chris@1622: } Chris@1622: Chris@1622: void short_n(int n) { Chris@1622: clock_t start = clock(); Chris@1631: std::set ee; Chris@1622: EventSeries s; Chris@1622: for (int i = 0; i < n; ++i) { Chris@1622: float value = float(rand()) / float(RAND_MAX); Chris@1622: Event e(rand(), value, 1000, QString("event %1").arg(i)); Chris@1631: ee.insert(e); Chris@1631: } Chris@1631: for (const Event &e: ee) { Chris@1622: s.add(e); Chris@1622: } Chris@1622: QCOMPARE(s.count(), n); Chris@1622: clock_t end = clock(); Chris@1622: report(n, "short", start, end); Chris@1622: } Chris@1622: Chris@1622: void longish_n(int n) { Chris@1622: clock_t start = clock(); Chris@1631: std::set ee; Chris@1622: EventSeries s; Chris@1622: for (int i = 0; i < n; ++i) { Chris@1622: float value = float(rand()) / float(RAND_MAX); Chris@1622: Event e(rand(), value, rand() / 1000, QString("event %1").arg(i)); Chris@1631: ee.insert(e); Chris@1631: } Chris@1631: for (const Event &e: ee) { Chris@1622: s.add(e); Chris@1622: } Chris@1622: QCOMPARE(s.count(), n); Chris@1622: clock_t end = clock(); Chris@1622: report(n, "longish", start, end); Chris@1622: } Chris@1622: Chris@1622: private slots: Chris@1622: void short_3() { short_n(1000); } Chris@1622: void short_4() { short_n(10000); } Chris@1622: void short_5() { short_n(100000); } Chris@1622: void short_6() { short_n(1000000); } Chris@1622: void longish_3() { longish_n(1000); } Chris@1622: void longish_4() { longish_n(10000); } Chris@1622: void longish_5() { longish_n(100000); } Chris@1622: }; Chris@1622: Chris@1622: #endif