Cách tình thời gian chạy console trên netbeans

c

(Harry Stormborn) #1

Chẳng là mình có code 1 bài liên quan tới time, trước code trong dev C thì dùng ntn:

clock_t start = clock();
...
...
clock_t finish = clock();
double duration = (double)(finish - start)/CLOCK_PER_SEC;

nhưng khi chạy trên netbeans thì chỉ output ra duration = 0 @@.Ai biết vì sao k ạ?

Và 1 cái nữa mình muốn hỏi thêm là trên netbeans thư viện <io.h> k có hàm _access thì làm sao để check xem file đã tồn tại hay chưa nhỉ?


(Hieu Nguyen Van) #2

Bạn dùng cái này xem

    long t1 = System.nanoTime();
 
    int value = 0;
    for (int i = 0; i < 100 * 1000 * 1000; i++) {
        value = calculate(value);
    }
 
    long t2 = System.nanoTime();
    System.out.println("Execution time: " + ((t2 - t1) * 1e-6) + " milliseconds");

(Hieu Nguyen Van) #3

Bạn theo cách này

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { 
    // do something
}

(Harry Stormborn) #4

C.ơn bạn. Nhưng mình phải code bằng C trên netbeans ấy =)). Java thì k đc rồi =.=


(Hieu Nguyen Van) #5

Đậu, ko đọc kỹ tưởng bạn code java


(Florastamine) #6

Code của bạn chạy quá nhanh (ms hoặc ít hơn) để có thể đếm được

#include <windows.h>

clock_t start = clock();
Sleep(500); // Treo 500 ms
clock_t finish = clock();
printf("%f\n", (double)(finish - start) / CLOCKS_PER_SEC);

image

Nếu không thể dùng _access(), bạn có thể viết function tương tự để thay thế, wrap Windows API hoặc system calls của platform bạn đang dùng. Cái gì không có thì viết ra.

int _access(const char *file)
{
  return ::PathFileExistsA((LPCSTR) file) == TRUE;
}

(Harry Stormborn) #7

C.ơn b nhé, mình fix đc rồi ạ =))


(Nguyen Van Duong) #8

Bạn dùng tiền tố volatile cho biến start với finish là được đúng ko.


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