QT + MINGW dịch sai?

Chào các bạn !

Mình có test đoạn code này :smile:

QElapsedTimer tmr;


void MainWindow::on_pushButton_clicked()
{
    tmr.restart();
    int m=0;
    for(int i=0;i<2000000000;i++)
    {
        m+=1;
    }
    qint64 t = tmr.elapsed();
    ui->label->setText(QString::number(t) + "-" + QString::number(m));
}

Kết quả hiển thị trên label là “0-2000000000”. Như vậy đoạn code chạy không đến 1ms.
Có bạn nào gặp vậy chưa nhỉ.

Một số trình biên dịch sẽ tối ưu lại code trước khi biên dịch :stuck_out_tongue:

2 Likes

Nhưng chỗ nào để cho nó không tối ưu cái này nhỉ ? Vì mục đích của mình là nó phải lặp đúng chỗ này @@.

build ở chế độ Debug thì nó sẽ ko tối ưu.

1 Like

Nhưng vòng lặp for kia.
Nó đoán đc kết quả cuối cùng. Nên thay vì phải chạy để làm từng vòng lặp, thì nó sẽ tính ra kq và gán trực tiếp luôn.
Tuy nhiên chỉ tối ưu nhũng cái đơn giản thôi.
Bạn lồng nhân chia if else vô là có thể nó sẽ bị chậm. :stuck_out_tongue:

2 Likes

Mình muốn lợi dụng for để trễ 100us chẳng hạn, tối ưu thế thì chết :stuck_out_tongue:

dùng for để làm trễ :scream:

trên Windows thì #include <windonws.h> rồi xài Sleep(miliseconds). Sleep ít hơn 1ms thì ta ko biết :sweat_smile:

1 Like

Bên C Embed toàn làm vậy :smile:

1 Like

Cả 2 đều như nhau :smile:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?