2008-12-18 29 views
6

Tôi đang tìm cách viết một wxWidget hiển thị một mạng nút đồ họa và do đó thực hiện rất nhiều thao tác vẽ. Tôi biết rằng bằng cách sử dụng Python để làm điều đó là có được chậm hơn, nhưng tôi muốn làm cho nó hoạt động và cổng nó sau này khi chức năng của nó. Lý tưởng nhất, nếu hit hiệu suất không phải là quá lớn, tôi muốn giữ codebase trong Python để cập nhật dễ dàng.WxWidget được viết bằng Python so với C++ chậm hơn bao nhiêu?

Điều tôi đang tự hỏi là tôi nên đợi những thứ để đi chậm hơn bao nhiêu? Tôi nhận ra điều này là mơ hồ và mở kết thúc, nhưng tôi chỉ cần một cảm giác về những gì mong đợi. Sẽ vẽ 500 vòng tròn xuống? Nó sẽ được chú ý ở tất cả? Kinh nghiệm của bạn là gì?

Trả lời

1

IMHO, nút cổ chai chính sẽ là cấu trúc dữ liệu bạn sẽ sử dụng để biểu thị biểu đồ mạng. Tôi đã mã hóa một ứng dụng tương tự để truy tìm các phụ thuộc giữa các phiên bản thành phần khác nhau trong một hệ thống và đồ họa là điều cuối cùng tôi phải lo lắng và tôi chắc chắn vẽ hơn 500 đối tượng với tô màu gradient cho một số trong số chúng!

Nếu bạn đang bị sa lầy, bạn nên thanh toán bằng cách sử dụng PyGame để vẽ mọi thứ.

+0

Cảm ơn. Tôi đã cho bạn dấu kiểm vì bạn đã đưa ra một trường hợp sử dụng gần như chính xác những gì tôi định làm. – Soviut

1

Theo kinh nghiệm của tôi, làm những điều ngây thơ (vẽ từng đối tượng vào màn hình) sẽ bog xuống trong Python nhanh hơn C++. Tuy nhiên, với Python nó sẽ nhanh hơn rất nhiều và ít đau đớn hơn để mã hóa nó một cách thông minh (xem ví dụ PseudoDC), điều này sẽ thổi bay việc thực thi C++ ngây thơ ra khỏi nước.

Tôi đồng ý với suraj. trên đó PyGame có thể là một lựa chọn tốt, tùy thuộc vào cách ứng dụng đồ họa chuyên sâu, so với các công cụ wxPython thuận tiện bạn sẽ bỏ cuộc.

+0

PseudoDC là gì? –

+0

Nhận xét hay. Tôi đã thêm liên kết vào tài liệu. Bạn cũng có thể tìm thấy một ví dụ trong bản demo wxPython. –

1

Để vẽ, mọi người đã đề xuất PyGame. Tôi thích PyGame, nó rất dễ làm việc và hoạt động tốt. Các lựa chọn khác sẽ là Pyglet, hoặc sử dụng PyOpenGL (bạn có thể vẽ một widget wx nữa, mặc dù tôi chưa bao giờ thực hiện nó).

Cá nhân, tôi sẽ làm điều đó bằng Python sử dụng bất kỳ thư viện nào tôi quen thuộc nhất (trong trường hợp của tôi, tôi sẽ sử dụng pygtk và cairo) và lo lắng về hiệu suất chỉ khi nó trở thành vấn đề - rồi hồ sơ và tối ưu hóa nút cổ chai, nếu mã Python của nó chậm, tôi sẽ biết bit nào để chạy trong C thay thế.

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