Chức năng tốc độ python

Để đo thời gian thực hiện chương trình, hãy sử dụng time. clock[] hoặc thời gian. chức năng thời gian []. Tài liệu python nói rằng chức năng này nên được sử dụng cho mục đích đo điểm chuẩn.  

ví dụ

import time
t0= time.clock[]
print["Hello"]
t1 = time.clock[] - t0
print["Time elapsed: ", t1 - t0] # CPU seconds elapsed [floating point]

đầu ra

Điều này sẽ cho đầu ra -

Time elapsed:  0.0009403145040156798

Bạn cũng có thể sử dụng mô-đun timeit để nhận phân tích thống kê chính xác về thời gian thực thi của đoạn mã. Nó chạy đoạn mã nhiều lần và sau đó cho bạn biết thời gian chạy ngắn nhất mất bao lâu. Bạn có thể sử dụng nó như sau

TUYÊN BỐ MIỄN TRỪ TRÁCH NHIỆM. Các ý kiến ​​​​bày tỏ trên trang web này là của riêng tôi và chúng không liên quan đến chủ lao động của tôi, người khác hoặc tổ chức khác dưới bất kỳ hình thức nào. Tất cả thông tin trên trang web này được cung cấp "nguyên trạng" mà không có bảo đảm hoặc bảo hành dưới bất kỳ hình thức nào. Đọc bản khuyến cáo đầy đủ ở đây

Bạn đang tìm cách đo lường hiệu suất của mã/ứng dụng Python của mình?

Ba cách phổ biến để đo hiệu suất của mã Python là

  • Sử dụng chức năng
  • Sử dụng mô-đun
    Time elapsed:  0.0009403145040156798
    9
  • Sử dụng các mô-đun

Tôi sẽ thảo luận chi tiết hơn về từng cách trong số ba cách dưới đây

Xin lưu ý rằng tất cả mã mẫu được sử dụng trong bài viết này có thể được tìm thấy trên hồ sơ GitHub của tôi tại liên kết sau. mẫu mã/Python

Sử dụng hàm
    $ python3 -m timeit 'for i in range[10]: print[i]'

0

Hàm

    $ python3 -m timeit 'for i in range[10]: print[i]'

0 trả về giá trị bộ đếm hiệu suất có thể được sử dụng để đo thời gian thực thi mã Python. Ví dụ: để đo thời gian thực hiện của một vòng lặp
    $ python3 -m timeit 'for i in range[10]: print[i]'

1 đơn giản, người ta có thể sử dụng mã tương tự như sau

    start_time = time.perf_counter[]
    
    for i in range[10]:
        print[i]
    
    end_time = time.perf_counter[]
    execution_time = end_time - start_time
    print[f"The execution time is: {execution_time}"]

Xin lưu ý rằng giá trị được trả về bởi

    $ python3 -m timeit 'for i in range[10]: print[i]'

0 không có điểm tham chiếu. Do đó, người ta phải luôn tính toán sự khác biệt giữa hai điểm khi đo thời gian thực hiện

Sử dụng mô-đun
Time elapsed:  0.0009403145040156798
9

Mô-đun

Time elapsed:  0.0009403145040156798
9 cung cấp một cách đơn giản để đo thời gian thực thi mã Python. Là một mô-đun,
Time elapsed:  0.0009403145040156798
9 cung cấp có cả giao diện dòng lệnh cũng như chức năng có thể gọi được có thể được sử dụng trong mã. Tôi đã bao gồm các ví dụ của mỗi bên dưới, sử dụng cùng một vòng lặp
    $ python3 -m timeit 'for i in range[10]: print[i]'

1 đơn giản như trong ví dụ trước

Giao diện dòng lệnh

Người ta có thể thực hiện lệnh sau để sử dụng giao diện dòng lệnh

Time elapsed:  0.0009403145040156798
9

    $ python3 -m timeit 'for i in range[10]: print[i]'

chức năng có thể gọi

Để sử dụng chức năng có thể gọi được của

Time elapsed:  0.0009403145040156798
9, người ta có thể sử dụng mã tương tự như sau

    def test_fn[]:
        for i in range[10]:
            print[i]

    timeit.timeit[lambda: test_fn[], number=10000]

Xin lưu ý rằng chức năng có thể gọi được của ________ 29 không có số lần lặp lại mặc định. Số lần lặp lại phải được cung cấp khi gọi hàm

Sử dụng mô-đun
    $ python3 -m timeit 'for i in range[10]: print[i]'

8 và
    $ python3 -m timeit 'for i in range[10]: print[i]'

9

Các mô-đun

    $ python3 -m timeit 'for i in range[10]: print[i]'

8 và
    $ python3 -m timeit 'for i in range[10]: print[i]'

9 cung cấp số liệu thống kê chuyên sâu hơn so với
    $ python3 -m timeit 'for i in range[10]: print[i]'

0 và
Time elapsed:  0.0009403145040156798
9. Có nhiều cách để sử dụng mô-đun
    $ python3 -m timeit 'for i in range[10]: print[i]'

8 và
    $ python3 -m timeit 'for i in range[10]: print[i]'

9. Tuy nhiên, tôi đã chia sẻ một đoạn mã ví dụ bên dưới sử dụng vòng lặp
    $ python3 -m timeit 'for i in range[10]: print[i]'

1 đơn giản giống như các ví dụ trước

Python là một trong những ngôn ngữ lập trình phổ biến nhất trong số các nhà phát triển. Nó được sử dụng ở mọi nơi, cho dù đó là phát triển web hay học máy

Có nhiều lý do khiến nó trở nên phổ biến, chẳng hạn như hỗ trợ cộng đồng, thư viện tuyệt vời, việc sử dụng rộng rãi trong Machine Learning và Big Data cũng như cú pháp dễ dàng của nó

Mặc dù có nhiều phẩm chất như vậy nhưng trăn có một nhược điểm, đó là tốc độ chậm. Là một ngôn ngữ thông dịch, python chậm hơn các ngôn ngữ lập trình khác. Tuy nhiên, chúng ta có thể khắc phục vấn đề này bằng một số mẹo

Trong bài viết này, tôi sẽ chia sẻ một số thủ thuật python mà chúng ta có thể sử dụng để làm cho mã python của chúng ta chạy nhanh hơn bình thường. Bắt đầu nào

 

1. Thuật toán & cấu trúc dữ liệu phù hợp

 

Mỗi cấu trúc dữ liệu có ảnh hưởng đáng kể đến thời gian chạy. Có nhiều cấu trúc dữ liệu tích hợp sẵn như list, tuple, set và dictionary trong python. Hầu hết mọi người sử dụng cấu trúc dữ liệu danh sách trong mọi trường hợp

Trong python, bộ và từ điển có hiệu suất tra cứu O[1] khi chúng sử dụng bảng băm cho điều đó. Bạn có thể sử dụng bộ và từ điển thay vì danh sách trong các trường hợp sau

  • Bạn không có mục trùng lặp trong bộ sưu tập
  • Bạn cần phải tìm kiếm các mục nhiều lần trong bộ sưu tập
  • Bộ sưu tập chứa một số lượng lớn các mặt hàng

Bạn có thể xem độ phức tạp về thời gian của các cấu trúc dữ liệu khác nhau trong python tại đây

Độ phức tạp về thời gian qua Python Wiki
Trang này ghi lại độ phức tạp về thời gian [còn gọi là "Big O" hoặc "Big Oh"] của các hoạt động khác nhau trong CPython hiện tại.

 

2. Sử dụng các chức năng và thư viện tích hợp

 
Các hàm tích hợp sẵn của Python là một trong những cách tốt nhất để tăng tốc mã của bạn. Bạn phải sử dụng các hàm python tích hợp bất cứ khi nào cần. Các chức năng tích hợp này đã được thử nghiệm và tối ưu hóa tốt.

Lý do các hàm tích hợp này nhanh là do các hàm tích hợp sẵn của python, chẳng hạn như min, max, all, map, v.v. , được thực hiện bằng ngôn ngữ C

Bạn nên sử dụng các hàm có sẵn này thay vì viết các hàm thủ công sẽ giúp bạn thực thi mã nhanh hơn

Ví dụ

newlist = []

for word in wordlist:
    newlist.append[word.upper[]]


Một cách tốt hơn để viết mã này là

Time elapsed:  0.0009403145040156798
0


Ở đây chúng tôi đang sử dụng chức năng bản đồ tích hợp, được viết bằng C. Do đó, nó nhanh hơn nhiều so với sử dụng vòng lặp

 

3. Sử dụng nhiều bài tập

 
Nếu bạn muốn gán giá trị cho nhiều biến thì đừng gán từng dòng một. Python có một cách hay và tốt hơn để gán nhiều biến.

Ví dụ

Time elapsed:  0.0009403145040156798
1


Một cách tốt hơn để gán các biến này là

Time elapsed:  0.0009403145040156798
2


Việc gán biến này rõ ràng và thanh lịch hơn nhiều so với cách trên

 

4. Thích hiểu danh sách hơn các vòng lặp

 
Hiểu danh sách là một cách hay và tốt hơn để tạo danh sách mới dựa trên các thành phần của danh sách hiện có chỉ trong một dòng mã.

Hiểu danh sách được coi là một cách Pythonic hơn để tạo danh sách mới hơn là xác định danh sách trống và thêm phần tử vào danh sách trống đó

Một ưu điểm khác của việc hiểu danh sách là nó nhanh hơn so với việc sử dụng phương thức append để thêm các phần tử vào danh sách python

Ví dụ

Sử dụng phương pháp nối thêm danh sách

Time elapsed:  0.0009403145040156798
3


Một cách tốt hơn bằng cách sử dụng hiểu danh sách

Time elapsed:  0.0009403145040156798
4


Mã trông sạch hơn khi sử dụng khả năng hiểu danh sách

 

5. nhập khẩu thích hợp

 
Bạn nên tránh nhập các mô-đun và thư viện không cần thiết cho đến khi và trừ khi bạn cần chúng. Bạn có thể chỉ định tên mô-đun thay vì nhập toàn bộ thư viện.

Nhập các thư viện không cần thiết sẽ làm chậm hiệu suất mã của bạn

Ví dụ

Giả sử bạn cần tìm căn bậc hai của một số. thay vì điều này

Time elapsed:  0.0009403145040156798
5


Dùng cái này

Time elapsed:  0.0009403145040156798
6


6. nối chuỗi

 
Trong python, chúng ta nối các chuỗi bằng toán tử ‘+’. Nhưng một cách khác để nối các chuỗi trong python là sử dụng phương thức nối.

Phương thức nối là một cách Pythonic hơn để nối các chuỗi và nó cũng nhanh hơn so với nối các chuỗi bằng toán tử '+'

Lý do tại sao phương thức nối [] nhanh hơn là do toán tử '+' tạo một chuỗi mới và sau đó sao chép chuỗi cũ ở mỗi bước, trong khi phương thức nối [] không hoạt động theo cách đó

Ví dụ

Time elapsed:  0.0009403145040156798
7


Sử dụng phương pháp nối

Time elapsed:  0.0009403145040156798
8


Đầu ra của cả hai phương pháp sẽ giống nhau. Sự khác biệt duy nhất là phương thức nối [] nhanh hơn toán tử '+'

Chủ Đề