2011-02-06 32 views
48

EDIT: không may LuaJIT đã được đưa ra khỏi so sánh trong liên kết dưới đây.Tại sao LuaJIT lại tốt như vậy?

comparison ngôn ngữ lập trình này cho thấy LuaJIT có cải thiện hơn gấp 10 lần so với việc triển khai Lúa thông thường. Tại sao thay đổi quá lớn? Có một cái gì đó cụ thể về Lua mà làm cho nó được hưởng lợi rất nhiều từ việc biên dịch JIT? Python cũng được tự động nhập và biên dịch sang bytecode, vậy tại sao PyPy (hiện giờ có JIT, tôi tin) cho thấy một bước nhảy lớn trong hiệu suất?

+33

câu trả lời đơn giản: Mike Paul là một vị thần :) – Necrolis

Trả lời

56

Mike Pall đã nói về điều này ở một vài nơi:

Như với tất cả các hệ thống performant, câu trả lời cuối cùng đi xuống đến hai điều: thuật toán và kỹ thuật. LuaJIT sử dụng các kỹ thuật biên dịch tiên tiến, và nó cũng có một thực hiện được thiết kế rất tinh xảo. Ví dụ, khi các kỹ thuật biên dịch lạ mắt không thể xử lý một đoạn mã, LuaJIT rơi trở lại một trình thông dịch rất nhanh được viết trong assembly x86.

LuaJIT nhận điểm kép về khía cạnh kỹ thuật, bởi vì bản thân LuaJIT không được thiết kế tốt, mà bản thân ngôn ngữ Lua có thiết kế đơn giản và mạch lạc hơn Python và JavaScript. Điều này làm cho nó dễ dàng hơn cho việc thực hiện để cung cấp hiệu suất tốt nhất quán.

+20

LuaJIT là một ví dụ điển hình về các thuật toán tuyệt vời và kỹ thuật xuất sắc. Cho dù đó (hoặc điều này) đọc như văn bản tiếp thị là không liên quan. Các vòng thông dịch được mã hóa bằng tay trong lắp ráp được đo lường nhanh hơn nhiều so với phiên bản C của thông dịch viên là những ví dụ về kỹ thuật tốt. Phân tích bí danh, lưu trữ lưu trữ, chuyển tiếp tải, gắn thẻ nano, phân bổ đăng ký và theo dõi hiệu quả kết hợp/thoát là các ví dụ về các thuật toán tuyệt vời (và kỹ thuật.) – Eloff

Các vấn đề liên quan