2009-02-08 30 views
7

Tôi đang xem xét nhúng IronPython làm ngôn ngữ kịch bản cho một ứng dụng mà tôi đang viết. Vì vậy, để thử nó, tôi đã tải về IronPython 2.0 và khởi động trình thông dịch tương tác. Chỉ cần bắt đầu điều lên mất khoảng 5 giây trên Intel Quad Core của tôi với 6 Gigs bộ nhớ. Tôi khó có thể hình dung được độ trễ của chiếc máy kém sức mạnh này.Hiệu suất IronPython

Dựa trên these benchmarks, có vẻ như hiệu suất của IronPython thực sự không quá tệ. Hoặc là nó? Tôi đã định cấu hình sai cái gì đó trong quá trình cài đặt chưa? Hay đây có phải là vấn đề với thông dịch viên tương tác không?

Trả lời

13

Hiệu suất của IronPython thực sự khá tốt. Hình phạt hiệu suất khởi động mà bạn nhận được có liên quan đến thời gian chạy .NET. Các ứng dụng .NET thường có thời gian khởi động chậm vì rất nhiều assembly được tải và một số trong chúng (ít nhất là một số lớp) được biên dịch một cách nhanh chóng.

Đây là hành vi được mong đợi trong .NET. Hiệu suất thời gian thực thực tế tốt hơn nhiều. Ngay cả hiệu năng khởi động cũng có thể được cải thiện bằng cách biên dịch trước phần lắp ráp IronPython và đặt một bản sao trong bộ nhớ cache lắp ráp GAC: toàn cầu của máy tính của bạn. Điều này có thể được thực hiện bằng cách sử dụng gacutil.exe.

1

Thời gian khởi động và hiệu suất chạy không liên quan trực tiếp. Java applet có hầu hết danh tiếng của họ cho sự chậm chạp không phải vì applet chạy chậm nhưng vì nó mất thời gian chạy phút để bắt đầu. Nếu bạn đang làm một ứng dụng máy tính để bàn, tôi sẽ lo lắng về hiệu suất khởi động. Nếu mã máy chủ đang chạy của bạn nơi thời gian chạy luôn hoạt động, nó không phải là vấn đề.

4

Bạn cũng có thể biên dịch trước thư viện chuẩn đi kèm với IronPython để có hiệu suất khởi động tốt hơn nhiều. Có một mẫu pyc.py có thể làm được điều này.

+1

Tôi vừa thử điều này và tôi nhận được hiệu suất _worse_ nhỏ. Không biết tại sao. – Cameron

2

Số lõi sẽ không làm cho nhiều sự khác biệt để khởi động Perf :)

Startup đặc biệt chậm trên một hệ điều hành 64-bit vì sự khác biệt về hiệu năng giữa phiên bản 32-bit và 64-bit jitters. Nếu bạn đang sử dụng một hệ điều hành 64-bit, nhưng không cần phải có quá trình 64-bit, hãy thử như sau:

  1. bản sao ipy.exe để ipy32.exe
  2. sử dụng corflags.exe từ Windows SDK để đánh dấu ipy32.exe là 322 bit thực thi bằng cách nói "corflags /32bit + ipy32.exe".

Phiên bản 32 bit sẽ cung cấp cho bạn khởi động tốt hơn nhiều - mặc dù vẫn không ở đâu tốt bằng khởi động CPython. Nhưng đây là điều chúng tôi đang tiếp tục làm việc.

1

Có những cải tiến trong thời gian khởi động thông dịch trong mã IronPython trên CodePlex. Mặc dù tôi vẫn thấy sự chậm trễ khi so sánh với CPython, có sự cải thiện đáng kể.