Công Nghệ

So sánh Python với ngôn ngữ C ++ và Go: Nghiên cứu

Python là ngôn ngữ lập trình ưa thích nhất cho Học máy và Trí tuệ nhân tạo, nhưng nó cũng ít được ưa thích nhất vì chậm giải quyết một số vấn đề liên quan đến vòng lặp.

Để thách thức thực tế này, các nhà nghiên cứu tại Phòng thí nghiệm Thị giác Máy tính EPFL đã công bố một báo cáo trong đó họ trình bày khả năng cạnh tranh của Python với C ++ và Go bằng cách giải câu đố N-queens phổ biến.

So sánh Python, C ++ và Go trong việc giải quyết vấn đề N-Queens

Bài toán N-queen liên quan đến sự sắp xếp của N-queen trên NxN bàn cờ sao cho không quân hậu nào có thể tấn công quân hậu nào khác (không có hai quân hậu nào có thể đi cùng một đường ngang, dọc hoặc chéo).

Các nhà nghiên cứu đã giải câu đố N-queens bằng cách sử dụng cả hai phương pháp tuần tự và song song được viết bằng C ++, Python và Go. Họ lập luận rằng mặc dù C ++ giành chiến thắng trong cuộc đua sau Go, Python cũng tiến gần hơn khi được biên dịch bằng trình biên dịch Numba.

Để chứng minh kết quả, họ đã lấy bảng tiêu chuẩn 8 × 8 và 10 × 10 để giải quyết và chạy tất cả các phiên bản mã trên Intel Core i7 lõi ​​tứ 2,9GHz trên Catalina OS.

Họ cũng thay đổi tất cả mã trên CPU Intel Xeon X5690 chạy Ubuntu 18.04 và xếp hạng tổng thể của các triển khai vẫn không thay đổi.

Kết quả xử lý tuần tự và song song

Thuật toán đệ quy là phương pháp tốt nhất để tính toán hoàn chỉnh bài toán N-queen. Giải pháp dựa trên thực tế là không có hai quân hậu xung đột với nhau vì chúng không được ở trên cùng một hàng, trên cùng một cột hoặc trên cùng một đường chéo.

Trong quá trình xử lý tuần tự, việc triển khai bằng Python, Go và C ++ chỉ ra rằng Python là chậm nhất. Nhưng khi cùng một mã được biên dịch bằng trình biên dịch Numba Python, C ++ vẫn thắng với Go chậm hơn 6% và Numba Python chậm hơn 12%.

Họ kết luận rằng C ++ và Go, gần gũi hơn với phần cứng, có thể hữu ích để tinh chỉnh mã trong một số trường hợp mà Go có thể được coi là một giải pháp thay thế cho cả Python và C ++, vì tính năng kiểm tra thời gian chạy của nó.

Để triển khai thêm Python, Go và C ++ bằng cách sử dụng xử lý song song, họ đã phân loại Python thành Para và Pool dựa trên hai cách tiếp cận để chạy Python trên CPU đa lõi.

Kết quả chứng minh rằng trong quá trình song song hóa, mã do Para Numba biên dịch hiển thị sự cải thiện đáng kể và tiến gần hơn với C ++ và Go. Hơn nữa, Python thành công với Go cho các giá trị lớn hơn, nhưng C ++ vẫn nhanh hơn.

Nhìn chung, nghiên cứu cho thấy rằng sự chậm chạp của Python phần lớn có thể được khắc phục bằng cách sử dụng trình biên dịch Numba mang lại hiệu suất tương đương với C ++, bản thân nó nhanh hơn Go.

Post Comment