STL có đủ hiệu quả cho các thiết bị di động không?


9

Khi nói đến phát triển trò chơi di động trên iOS và Android NDK, một số nhà phát triển viết các thùng chứa C ++ của riêng họ, trong khi những người khác cho rằng STL không phù hợp để phát triển trò chơi trên thiết bị di động (Ví dụ: tác giả của Lập trình 3D iPhone sử dụng STL thay vì Objective- C trong ví dụ của anh ấy. Bảo vệ của anh ấy là STL không chậm hơn Objective-C).

Sau đó, cũng có những nhà phát triển di động từ bỏ hoàn toàn C ++ và phát triển game hoàn toàn (hoặc chủ yếu) bằng ngôn ngữ C (C89 / C90).

Những lợi ích và hạn chế của mỗi phương pháp là gì?


4
Những lời chỉ trích chính đối với STL là các kiểu cấp phát bộ nhớ và hỗ trợ trình biên dịch không thể đoán trước - cả hai vấn đề đều có thể được giải quyết bằng cách sử dụng thay thế STL, ví dụ EASTL hoặc STLPort.
Raphael R.

1
Một số câu trả lời từ câu hỏi này: gamedev.stackexchange.com/questions/268/ cảm ứng trên nền tảng di động và sẽ cung cấp cho bạn câu trả lời của bạn.
Tetrad

5
Tôi nghi ngờ đối với nhiều người "từ bỏ" (giống như chưa từng sử dụng) C ++ trên nền tảng di động, nó ít hơn về STL và nhiều hơn về sự lúng túng của Objective-C ++ (và hỗ trợ C ++ thường tụt lại trên chuỗi công cụ của Apple).

Câu hỏi thực sự là, bạn có thể viết tốt hơn không? Bạn nên hiểu về STL; và trong trường hợp nó không làm những gì bạn muốn, hãy thực hiện hành vi mà bạn yêu cầu.
giảm tốc

Câu trả lời:


6

Hãy để tôi nói với bạn một điều đầu tiên. C ++ nhanh hơn các cuộc gọi Objective-C. Objective-C sử dụng các hệ thống truyền tin nhắn nên nó sẽ có một số chi phí thời gian chạy khi so sánh với C ++. Chỉ cần nhìn vào một số so sánh ở đây .

Đến với sự phát triển "ứng dụng" chung của iOS, việc sử dụng các chức năng tích hợp của Objective-C là rất hợp lý vì hiệu suất không thể là một tiêu chí ở một mức độ nào đó. Nhưng trong phát triển trò chơi, chúng ta cần xem xét những kết quả này.

Khi tôi đang làm việc với dự án trước đây của mình (Robokill), chúng tôi đã tối ưu hóa hầu hết mã khi cần thiết với các cuộc gọi đơn giản (chúng tôi đã chuyển đổi lớp hạt Objective-C thành lớp C ++). Hoặc thậm chí bạn có thể sử dụng các hàm thời gian chạy Objective-C cho các cuộc gọi C trực tiếp.

Đến với câu hỏi của bạn, đây là câu trả lời của tôi: có, STL được tối ưu hóa tốt cho mục đích của nó . Mặc dù mã triển khai không thể đọc được nhiều, nhưng thật thú vị khi kiểm tra việc thực hiện một lần.

Tuy nhiên, chúng ta có thể tối ưu hóa mã Objecive-C ở một mức độ nào đó, bằng cách lưu trước bộ đệm con trỏ hàm và thực hiện các cuộc gọi với thời gian chạy Objective-C.

Hi vọng điêu nay co ich!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.