Tại sao python lại phổ biến nếu nó chậm?

Python là ngôn ngữ cấp cao [hơn C hoặc C++], do đó Python tự quản lý các chi tiết của chương trình như cấp phát bộ nhớ, cấp phát bộ nhớ, con trỏ, v.v. Điều này làm cho các lập trình viên viết mã bằng Python dễ dàng hơn. Mã Python đầu tiên được biên dịch thành Mã Byte python. Quá trình chuyển đổi trình thông dịch Byte Code diễn ra nội bộ và hầu hết được ẩn khỏi nhà phát triển. Mã byte là lập trình cấp thấp và độc lập với nền tảng. Biên dịch mã byte là tăng cường thực thi mã nguồn. Mã nguồn được biên dịch thành mã byte sau đó được thực thi từng cái một trong máy ảo của Python để thực hiện các thao tác. Máy ảo là một thành phần bên trong của Python

Mã Python nội bộ được giải thích trong thời gian chạy thay vì được biên dịch thành mã gốc do đó chậm hơn một chút.  

Chạy tập lệnh Python v/s chạy mã C/C++

con trăn. Đầu tiên nó được biên dịch thành Byte Code. Mã Byte này sau đó được giải thích và thực thi bởi PVM [Máy ảo Python]

C/C++. Mã nguồn được biên dịch thành Mã nhị phân có thể được CPU thực thi trực tiếp giúp chúng hoạt động hiệu quả hơn

CPython đặc biệt chậm vì nó không có trình tối ưu hóa Just in Time [vì đây là triển khai tham chiếu và chọn tính đơn giản hơn hiệu suất trong một số trường hợp nhất định]. Unladen Swallow là một dự án để thêm JIT được LLVM hỗ trợ vào CPython và đạt được tốc độ tăng tốc lớn. Có thể Jython và IronPython nhanh hơn nhiều so với CPython cũng như chúng được hỗ trợ bởi các máy ảo được tối ưu hóa mạnh mẽ [JVM và. NET CLR]

Tuy nhiên, có một điều có thể khiến Python chậm hơn, đó là nó được nhập động và có rất nhiều tra cứu cho mỗi lần truy cập thuộc tính

Chẳng hạn, gọi f trên một đối tượng A sẽ gây ra các tra cứu có thể có trong __dict__, gọi tới __getattr__, v.v., sau đó cuối cùng gọi __call__ trên đối tượng có thể gọi được là f

Đối với gõ động, có nhiều cách tối ưu hóa có thể được thực hiện nếu bạn biết loại dữ liệu bạn đang xử lý. Ví dụ: trong Java hoặc C, nếu bạn có một mảng thẳng các số nguyên mà bạn muốn tính tổng, mã hợp ngữ cuối cùng có thể đơn giản như tìm nạp giá trị tại chỉ mục i, thêm nó vào accumulator, sau đó tăng dần i

Trong Python, rất khó để tạo mã tối ưu như vậy. Giả sử bạn có một đối tượng lớp con danh sách chứa int. Trước khi thêm bất kỳ thứ gì, Python phải gọi A0, sau đó thêm nó vào "bộ tích lũy" bằng cách gọi A1, sau đó lặp lại. Hàng tấn tra cứu thay thế có thể xảy ra ở đây vì một luồng khác có thể đã thay đổi, ví dụ như phương thức A2, lệnh của thể hiện danh sách hoặc lệnh của lớp, giữa các lệnh gọi add hoặc getitem. Ngay cả việc tìm bộ tích lũy và danh sách [và bất kỳ biến nào bạn đang sử dụng] trong không gian tên cục bộ cũng gây ra tra cứu chính tả. Chi phí tương tự này áp dụng khi sử dụng bất kỳ đối tượng nào do người dùng xác định, mặc dù đối với một số loại tích hợp, nó được giảm nhẹ phần nào

Cũng cần lưu ý rằng các kiểu nguyên thủy như bigint [int trong Python 3, long trong Python 2. x], list, set, dict, v.v., là những thứ mọi người sử dụng nhiều trong Python. Có rất nhiều hoạt động được tích hợp sẵn trên các đối tượng này đã được tối ưu hóa đủ. Ví dụ: đối với ví dụ trên, bạn chỉ cần gọi A3 thay vì sử dụng bộ tích lũy và chỉ mục. Bám sát những điều này và một chút xử lý số với int/float/complex, nhìn chung bạn sẽ không gặp vấn đề về tốc độ và nếu bạn gặp phải vấn đề này, có thể có một đơn vị thời gian quan trọng nhỏ [ví dụ: hàm thông báo SHA2] mà bạn có thể . Thực tế là khi bạn viết mã C hoặc C++, bạn sẽ lãng phí rất nhiều thời gian để làm những việc mà bạn có thể làm trong vài giây/dòng mã Python. Tôi muốn nói rằng sự đánh đổi luôn xứng đáng trừ trường hợp bạn đang làm một việc gì đó như lập trình nhúng hoặc lập trình thời gian thực và không đủ khả năng chi trả

Python là một ngôn ngữ lập trình cấp cao, hướng đối tượng, mã nguồn mở với ngữ nghĩa động. Các cấu trúc dữ liệu tích hợp cấp cao của nó, kết hợp với kiểu gõ động và liên kết động, làm cho nó trở nên rất hấp dẫn đối với Phát triển ứng dụng nhanh, cũng như để sử dụng làm ngôn ngữ kịch bản hoặc keo dán để kết nối các thành phần hiện có với nhau

Python đủ đơn giản và dễ hiểu để chúng ta có thể làm việc hiệu quả khá nhanh. Bây giờ rất nhiều thư viện đã được viết cho Python, khiến việc thay đổi ngôn ngữ tốt hơn trở nên khó khăn. nó rất dễ học và hiện tại, nó có các công cụ AI/Thống kê tốt nhất

Đôi khi chúng ta ví python như “băng keo” của bộ công cụ phát triển phần mềm. Chúng ta có thể nhận được tất cả các loại công cụ và thư viện hiệu suất cao được viết bằng C/C++ với các trình bao bọc python mà sau đó chúng ta có thể dễ dàng “băng keo” với nhau trong python để tạo các chương trình của riêng bạn

Mặc dù bản thân python hơi chậm, nhưng đó không phải là vấn đề lớn vì đó chỉ là lớp trên cùng của toàn bộ chương trình

Ví dụ: NumPy về cơ bản là một trình bao bọc Python xung quanh BLAS [Chương trình con Đại số tuyến tính cơ bản] cộng với các API cấp cao hơn được xây dựng trên mã API cấp cao nhất và cấp cao hơn trong Numpy hầu hết được viết bằng C

Một ví dụ khác là, SciPy là trình bao bọc cho LAPACK [Gói đại số tuyến tính] cùng với các API cấp cao hơn

Trong trường hợp bạn đang xây dựng mã sản xuất, sau khi bạn sử dụng công cụ ghi nhật ký, độ an toàn của luồng, số liệu, v.v. python kết thúc với một số lượng lớn bản tóm tắt và nó trở nên biểu cảm hơn vì các chương trình python thường ngắn hơn nhiều và nhiều thành ngữ hơn các ngôn ngữ khác

Chúng tôi biết, chắc chắn có những nơi hiệu suất quan trọng, nhưng hầu hết các ngôn ngữ thuộc loại này — bao gồm cả Python — cho phép bạn sử dụng tiện ích mở rộng trong các ngôn ngữ được biên dịch khi hiệu suất quan trọng

Trong điện toán khoa học, N cho tập lệnh cấp cao nhất có thể rất rất thấp [thấp nhất là 1] khá thường xuyên. Đây là lý do tại sao Python rất phổ biến ở đó. Những thứ chính chúng tôi sử dụng python cho

  • Giàn/đồ gá kiểm tra tự động — bị giới hạn bởi tốc độ của thiết bị kiểm tra/thời gian xử lý [kiểm tra ngâm EG]/tốc độ của dây chuyền sản xuất
  • Glue — lấy dữ liệu từ X và chuyển đổi nó thành Y, nếu chúng tôi phải chạy tập lệnh mỗi tháng một lần để chuyển đổi một số tệp dữ liệu thành bảng tính thì tôi sẽ mất nhiều thời gian hơn để tìm nó so với thời gian chạy nó — và tiết kiệm cho tôi rất nhiều
  • Phân tích dữ liệu - nếu chúng tôi chạy tập lệnh python giải mã/phân tích tệp chụp Wireshark lớn thì giới hạn tốc độ có thể là do ổ cứng. Nhưng dù sao thì ai cũng quan tâm vì phân tích giúp chúng tôi tiết kiệm hàng giờ làm việc thủ công và chúng tôi có thể làm những việc khác trong khi đang suy nghĩ
  • Ghi nhật ký - ghi dữ liệu dài hạn để gỡ lỗi/giám sát, mã có thể chậm như địa ngục vì tất cả những gì nó phải làm là thu thập dữ liệu với tốc độ chúng tôi cần và ghi vào đĩa
  • Housekeep - các tập lệnh chạy trong nền và/hoặc dưới dạng các công việc định kỳ, chúng tôi không quan tâm nếu chúng không được tối ưu hóa vì chúng chỉ chạy trong vài giây mỗi ngày

Các ứng dụng học máy không chậm trong python. bạn đang giảm tải công việc của mình cho các thư viện đã biên dịch được tối ưu hóa cao. Python là một ngôn ngữ keo giúp dễ dàng xâu chuỗi các lệnh gọi thư viện

Trên thực tế, trong phần lớn các trường hợp, tốc độ không thành vấn đề

  1. Sự khác biệt tuyệt đối giữa thời gian thực hiện nhanh nhất và chậm nhất, với công nghệ hiện tại [cả phần mềm và phần cứng], là rất nhỏ. Sự khác biệt tương đối có thể lớn — có thể mã C++ được tinh chỉnh của bạn thực thi trong 30 giây, trong khi mã Python thực hiện điều tương tự mất 100 lần thời gian — nhưng sự khác biệt tuyệt đối vẫn dưới 3 mili giây. Con người không thể nhận thấy sự khác biệt trong 3 ms
  2. Điều này càng được củng cố bởi thực tế là phần lớn phần mềm hiện tại được viết cho web và web thì chậm. Khi người dùng phải đợi 250 mili giây cho một lượt yêu cầu, thì 3 mili giây trở nên không liên quan thậm chí tương đối
  3. Cuối cùng, trong khi tốc độ thực thi hiếm khi quan trọng, thì tốc độ viết mã — và mức độ dễ bảo trì — hầu như luôn luôn quan trọng và điều đó có xu hướng tốt hơn khi mã hóa bằng các ngôn ngữ cấp cao hơn
  • Python là lý tưởng cho các thói quen giới hạn IO, trong đó tốc độ không liên quan. Nó cũng đủ nhanh cho 95% dự án
  • Python là tuyệt vời ở đồng thời. Đạt được tính song song không phải là lý do duy nhất để thực hiện đồng thời, lý do chính là thực hiện công cụ I/O và python giúp việc đó trở nên cực kỳ dễ dàng
  • Python hiếm khi là ngôn ngữ tốt nhất để sử dụng cho bất cứ thứ gì, nhưng nó thường là ngôn ngữ tốt thứ hai, khiến nó trở thành ngôn ngữ có mục đích chung tốt để mọi người biết
  • Bộ thư viện khổng lồ và dễ truy cập của Python [cảm ơn PIP. ] giải quyết rất nhiều vấn đề khó khăn cho bạn
  • Python cung cấp sự cân bằng tốt giữa tính nghiêm ngặt và khả năng sử dụng. thật dễ dàng để viết một chương trình có thể bảo trì để thực hiện những gì nó phải làm

Và bạn có nó rồi đấy. Cảm ơn bạn đã đọc

Thêm nội dung bằng tiếng Anh. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Nhận quyền truy cập độc quyền để viết các cơ hội và lời khuyên trong cộng đồng của chúng tôi Discord

Tại sao Python rất phổ biến mặc dù rất chậm?

Trong bài viết này, chúng ta sẽ xem lý do tại sao Python lại phổ biến mặc dù chậm như vậy. Python là ngôn ngữ lập trình cấp cao, hướng đối tượng, năng động và đa năng được tôi. e ngôn ngữ đa mô hình . Cú pháp, kiểu gõ động và bản chất diễn giải của Python làm cho nó trở thành một ngôn ngữ kịch bản xuất sắc.

Tại sao Python đột nhiên trở nên phổ biến?

Khi Guido van Rossum tạo ra python vào những năm 1980, ông đã đảm bảo thiết kế nó trở thành một ngôn ngữ có mục đích chung. Một trong những lý do chính cho sự phổ biến của python là sự đơn giản trong cú pháp của nó để có thể dễ dàng đọc và hiểu ngay cả bởi các nhà phát triển nghiệp dư cũng .

Tại sao Python lại được thổi phồng như vậy?

Nó cũng cực kỳ phổ biến với các nhà phát triển vì dễ sử dụng và linh hoạt . Tuy nhiên, vấn đề là nếu bạn muốn học Python ngày nay [trái ngược với bất kỳ ngôn ngữ nào khác], bạn có thể không gặp nhiều may mắn với nó như một người học vào năm 1989 hoặc thậm chí 1998 khi Python 2 được phát hành lần đầu tiên.

Có vấn đề gì khi Python chậm không?

Trong bài viết này, chúng ta sẽ khám phá ra rằng Python không phải là một ngôn ngữ tồi mà chỉ là rất chậm . Nó được tối ưu hóa cho mục đích nó được xây dựng. cú pháp dễ dàng, mã dễ đọc và rất nhiều tự do cho nhà phát triển.

Chủ Đề