2010-12-14 5 views
13

Sử dụng trình biên dịch đệm giao thức google cho C++ của nó không rõ ràng đó là nhanh hơn: tối ưu hóa cho tốc độ:Tối ưu hóa protobuf nào?

option optimize_for = SPEED; 

hoặc tối ưu hóa cho thời gian chạy ánh sáng:

option optimize_for = LITE_RUNTIME; 

nếu tốc độ nhanh hơn, những gì làm cho nó nhanh hơn? có ai có dữ liệu khó về chủ đề này không?

Trả lời

15

Con đường tôi đọc documentation,

  • tối ưu hóa cho CODE_SIZE không tạo ra các phương pháp accessor nhanh cho tất cả mọi thứ, nhưng dựa vào phản xạ chậm,

  • tối ưu hóa cho tốc độ sẽ cho bạn accessors nhanh

  • và tối ưu hóa cho LITE_RUNTIME cũng sẽ cấp cho bạn khả năng truy cập nhanh, nhưng không hỗ trợ đầy đủ chức năng của protobuf, nhưng chỉ có tập con nhỏ hơn protobuf-lite. Về cơ bản, điều này có nghĩa là các bộ mô tả hoặc sự phản chiếu không có sẵn.

Vì vậy, tôi đoán, LITE_RUNTIME không chậm hơn SPEED và bạn nên chọn tùy thuộc vào thư viện thời gian chạy mà bạn muốn yêu cầu (lite hoặc đầy đủ).

nếu tốc độ nhanh hơn, điều gì làm cho tốc độ nhanh hơn?

SPEED nhanh hơn CODE_SIZE vì nó sử dụng mã được tạo tự động thay vì phản chiếu thời gian chạy.

+0

Tôi cũng hiểu điều đó ... tuy nhiên bằng chứng thực nghiệm cho thấy SPEED nhanh hơn một chút ...? bất cứ ai khác có thể xác nhận? –