Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: Hàm đo thời gian trong lập trình C là hàm nào?

  1. #1
    Ngày gia nhập
    10 2008
    Bài viết
    5

    Mặc định Hàm đo thời gian trong lập trình C là hàm nào?

    Khi phân tích thời gian tính của các giải thuật tình toán. Mình cần dùng công cụ tính thời gian để so sánh. Trong C mình biết có thư viện time.h. và dùng thư viện này khai báo biến thời gian để tính thời gian chương trình chạy . Nhưng cách làm này thì thời gian đo được nhỏ nhất ở đơn vị là giây (s). Có cách nào đo thời gian nhỏ hơn (s) không? Mọi người chỉ giúp
    vD: Khi so sánh thời gian chạy của 2 giải thuật quicksort 2 luồng, và quicksort 3 luồng. Nếu số phần tử sắp xếp không quá lớn, cả 2 giải thuật đo theo cách của mình ở trên đều báo là 0 s. như thế không tháy đựoc độ nhanh chậm của chúng .

  2. #2
    No Avatar
    ngocbig Khách

    Cái này đơn giản thôi mà. Bạn lấy thời gian bắt đầu hàm, lấy thời gian kết thúc hàm. Trừ cho nhau là ra thời gian thực thi.

  3. #3
    Ngày gia nhập
    10 2008
    Bài viết
    5

    Bạn chưa hiểu ý tớ rồi .Tất nhiên là khi dùng thư viện time.h .Để tính thời gian thực thi ta lấy thời điểm cuối trừ thời điểm đầu.
    nhưng ý tớ ở đây là ngoài cách làm đó ra. THì có cách làm nào tính được thời gian có đơn vị nhỏ hơn giây ko mà ? ^^

  4. #4
    No Avatar
    ngocbig Khách

    Bạn tham khảo struct SYSTEMTIME và GetLocalTime trong MSDN nhé.

    Cách khác (gần đúng) là dùng hàm clock.
    Calculates the wall-clock time used by the calling process.

    clock_t clock( void );

    Return Value
    The elapsed wall-clock time since the start of the process (elapsed time in seconds times CLOCKS_PER_SEC). If the amount of elapsed time is unavailable, the function returns –1, cast as a clock_t.

    Remarks
    The clock function tells how much time the calling process has used. A timer tick is approximately equal to 1/CLOCKS_PER_SEC second. In versions of Microsoft C before 6.0, the CLOCKS_PER_SEC constant was called CLK_TCK.
    MSDN

    Tham khảo nữa:_http://www.cs.rpi.edu/~musser/gp/timing.html
    Đã được chỉnh sửa lần cuối bởi ngocbig : 07-01-2009 lúc 10:20 PM.

  5. #5
    Ngày gia nhập
    10 2008
    Bài viết
    5

    Cám ơn bạn nhé ! Công đồng C việt không thấy có nút thanks nhỉ ?
    Đã được chỉnh sửa lần cuối bởi asahi : 08-01-2009 lúc 10:59 AM.

  6. #6
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mặc định Hàm đo thời gian trong lập trình C là hàm nào?

    - Nếu bạn xài TC31 thì có hàm gettime lấy được đến mili giây
    - Trong win32 thì có hàm GetSystemTime cũng lấy được đến mili giây.
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  7. #7
    Ngày gia nhập
    11 2010
    Bài viết
    5

    Angry hàm đếm thời gian

    ai chỉ dùm e hàm đếm thời gian với!

  8. #8
    Ngày gia nhập
    11 2010
    Bài viết
    18

    #include <iostream>
    #include <fstream>
    using namespace std;
    #include <time.h>
    void DiChuyen(int n, int i, int j);
    void DiChuyen(int n, int i, int j)
    {
    if (n==1)
    {
    //ofstream oFile("OUTPUT.OUT");
    cout<<"\nChuyen tu cot "<<i<<" sang cot "<<j;

    }
    else
    {
    DiChuyen(n-1,i,6-i-j);
    DiChuyen(1,i,j);
    DiChuyen(n-1,6-i-j,j);
    }
    //oFile.close();

    }
    void main()
    {
    int n;
    cout<<"Nhap n: ";
    cin>>n;
    clock_t start = clock();// ham bất đầu đếm thời gian thực hiện chương trình
    DiChuyen(n,1,2);
    clock_t finish = clock();// ham đếm thời gian kết thúc
    double duration = (double)(finish - start) / CLOCKS_PER_SEC;
    cout<<"\n\n\n";
    printf("Thoi gian thuc thi: %.2lf", duration);
    system("pause");
    }

    bạn tham khảo code này nhé

  9. #9
    Ngày gia nhập
    11 2012
    Bài viết
    2

    có hàm nào lấy thời gian trong visual studio c++ không vậy các bạn?
    mình muốn làm một trò chơi nhỏ bắt người sử dụng nhập vào một kí tự trong vòng 10s.

  10. #10
    Ngày gia nhập
    11 2014
    Bài viết
    5

    sao mình dùng hàm clock() này toàn bị trả giá trị về 0 nhỉ?? ai giúp mình với!!
    Code:
    clock_t s,f;
     	s=clock();
     	Bucket_Sort(A, 10002,n);  
     	f=clock();
     	double t=(double)(f-s)/CLOCKS_PER_SEC;
     	printf("thoi gian thuc hien %f ",t);

Các đề tài tương tự

  1. thời gian trên datetimeinput không được nằm trong khoản thời gian có sẳn
    Gửi bởi hungzany trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 04-06-2013, 09:23 AM
  2. Trả lời: 0
    Bài viết cuối: 04-11-2011, 03:38 PM
  3. Lấy thời gian hiện tại + Chỉnh thời gian trong Windows
    Gửi bởi ncandy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 26-03-2011, 10:29 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn