summaryrefslogtreecommitdiffstats
path: root/tests/benchmarks
diff options
context:
space:
mode:
Diffstat (limited to 'tests/benchmarks')
-rw-r--r--tests/benchmarks/corelib/io/qiodevice/main.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/benchmarks/corelib/io/qiodevice/main.cpp b/tests/benchmarks/corelib/io/qiodevice/main.cpp
index b106a9fd3d..de4660a253 100644
--- a/tests/benchmarks/corelib/io/qiodevice/main.cpp
+++ b/tests/benchmarks/corelib/io/qiodevice/main.cpp
@@ -39,6 +39,8 @@ class tst_qiodevice : public QObject
private slots:
void read_old();
void read_old_data() { read_data(); }
+ void peekAndRead();
+ void peekAndRead_data() { read_data(); }
//void read_new();
//void read_new_data() { read_data(); }
private:
@@ -86,6 +88,36 @@ void tst_qiodevice::read_old()
}
}
+void tst_qiodevice::peekAndRead()
+{
+ QFETCH(qint64, size);
+
+ QString name = "tmp" + QString::number(size);
+
+ {
+ QFile file(name);
+ file.open(QIODevice::WriteOnly);
+ file.seek(size);
+ file.write("x", 1);
+ file.close();
+ }
+
+ QBENCHMARK {
+ QFile file(name);
+ file.open(QIODevice::ReadOnly);
+
+ QByteArray ba(size / 1024, Qt::Uninitialized);
+ while (!file.atEnd()) {
+ file.peek(ba.data(), ba.size());
+ file.read(ba.data(), ba.size());
+ }
+ }
+
+ {
+ QFile file(name);
+ file.remove();
+ }
+}
QTEST_MAIN(tst_qiodevice)