Tranh luận về hiệu năng Python 3.13: Kết quả không đồng nhất và những suy giảm bất ngờ

BigGo Editorial Team
Tranh luận về hiệu năng Python 3.13: Kết quả không đồng nhất và những suy giảm bất ngờ

Phiên bản Python 3.13 đã làm dấy lên một cuộc tranh luận thú vị trong cộng đồng lập trình viên về đặc điểm hiệu năng của nó, với một số lập trình viên báo cáo về sự suy giảm không mong đợi so với các phiên bản trước, đặc biệt là Python 3.11.

Phân tích hiệu năng

Các đánh giá chuẩn và thảo luận gần đây từ cộng đồng đã cho thấy một bức tranh phức tạp về hiệu năng của Python 3.13. Theo các bài kiểm tra được chia sẻ bởi các lập trình viên trên nhiều nền tảng:

Hiệu năng List Comprehension

  • Danh sách nhỏ : Python 3.13 cho thấy những cải thiện đáng kể

    • ~9.54ns cho mỗi thao tác với N=100 phần tử
    • Nhanh hơn gần 40% so với Python 3.12 cho các thao tác quy mô nhỏ
  • Danh sách lớn : Kết quả không đồng nhất

    • Cải thiện không đáng kể cho danh sách có hơn 10K phần tử
    • Một số lập trình viên báo cáo hiệu năng suy giảm trong một số trường hợp cụ thể
    • Một lập trình viên báo cáo sự sụt giảm hiệu năng đột ngột với danh sách khoảng 10.000 phần tử

Vấn đề đặc thù theo nền tảng

Các bài kiểm tra trên nền tảng MacOS ARM cho thấy kết quả đáng lo ngại:

  • Hiệu năng chậm hơn 6-9% đối với một số thao tác trên danh sách so với Python 3.11
  • Sự suy giảm đáng chú ý 57% cho các thao tác array.array đặc biệt trên MacOS ARM (theo báo cáo trong Python issue #123540)

Hiệu năng định dạng chuỗi

Một cuộc thảo luận thú vị đã nổi lên về hiệu năng định dạng chuỗi. Các đánh giá chuẩn cho thấy:

## F-strings (nhanh nhất cho các trường hợp đơn giản)
fexample # ~61.1ns mỗi vòng lặp

## %-formatting
example %s % var # ~124ns mỗi vòng lặp

## .format()
example {}.format(var) # ~181ns mỗi vòng lặp

Những phát triển tích cực

Mặc dù có những lo ngại về hiệu năng, Python 3.13 mang đến nhiều cải tiến được đón nhận:

  • Chức năng REPL được nâng cao
  • Khả năng gỡ lỗi được cải thiện
  • Thông báo lỗi tốt hơn, đặc biệt có lợi cho các lập trình viên mới
  • Cải thiện đáng kể cho các thao tác hệ thống tệp thông qua shutil
  • Nhiều cải tiến liên quan đến xử lý đồng thời

Góc nhìn cộng đồng

Cuộc thảo luận về hiệu năng làm nổi bật một cuộc tranh luận rộng lớn hơn về sự phát triển của Python. Trong khi một số lập trình viên bày tỏ lo ngại về sự suy giảm hiệu năng, những người khác chỉ ra rằng các trường hợp sử dụng điển hình của Python thường dựa vào các module mở rộng C cho các thao tác đòi hỏi hiệu năng cao. Việc tập trung vào cải thiện trải nghiệm lập trình và thông báo lỗi tốt hơn cho thấy một cách tiếp cận cân bằng trong việc phát triển ngôn ngữ.

Công việc đang tiến hành trên dự án GILectomy (loại bỏ Global Interpreter Lock) có thể đã chia sẻ sự chú ý từ các tối ưu hóa hiệu năng khác, mặc dù điều này có thể dẫn đến những cải tiến đáng kể trong các phiên bản tương lai.