30/09/2018, 19:03
QT + MINGW dịch sai?
Chào các bạn !
Mình có test đoạn code này
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ỉ.
Bài liên quan
Một số trình biên dịch sẽ tối ưu lại code trước khi biên dịch
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.
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.
Mình muốn lợi dụng for để trễ 100us chẳng hạn, tối ưu thế thì chết
dùng for để làm trễ
trên Windows thì
#include <windonws.h>
rồi xài Sleep(miliseconds). Sleep ít hơn 1ms thì ta ko biếtBên C Embed toàn làm vậy
Cả 2 đều như nhau