qt QList析构大比拼

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012020854/article/details/69525470

//mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTime>

typedef struct{
    QString text;
    QString id;
    QString value;

}TestData;

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    void initList();
private:
    Ui::MainWindow *ui;
    QTime _time;
    QTime _time1;
};

#endif // MAINWINDOW_H

//mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    initList();
}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::initList()
{
    QList<TestData*>list1,list;
    int retTime1 = 0;
    int retTime = 0;

    for(long i=0;i<1000000;++i)
    {
        TestData*t = new TestData;
        t->id = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
        t->text = "222222222222222222222222222222222222222222222222222222111111111111111111111111111111111111111111";
        t->value = "33333333333333333333333333333333333333333333333333333333333333333111111111111111111111111111111111111111111";
        list.append(t);

        TestData*t1 = new TestData;
        t1->id = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111";
        t1->text = "222222222222222222222222222222222222222222222222222222111111111111111111111111111111111111111111";
        t1->value = "33333333333333333333333333333333333333333333333333333333333333333111111111111111111111111111111111111111111";
        list1.append(t1);
    }
    //====第一种析构===(目前最快感觉快在foreach)=========================
    _time.start();
    foreach(TestData*/*auto*/ var,list){
        delete var;
    }
    list.clear();
    retTime = _time.elapsed();
    qDebug()<<"retTime:0:"<<retTime;

    //=====第二种析构====(不知道是否慢在take上)==================================
    _time1.start();
    while(!list1.isEmpty()){
        delete list1.takeFirst();
    }
    retTime1 = _time1.elapsed();
    qDebug()<<"retTime1:1:"<<retTime1;
    //==============================================


}

猜你喜欢

转载自blog.csdn.net/u012020854/article/details/69525470