qt QList析构大比拼

//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;
    //==============================================


}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值