Tôi đang cố đưa ra quyết định cách thiết kế ứng dụng của mình.Android: có ngắn thực sự mất 2 byte?
Tôi có khoảng 300 trường hợp của lớp chỉ như thế này:
public class ParamValue {
protected String sValue = null;
protected short shValue = 0;
protected short mode = PARAM_VALUE_MODE_UNKNOWN;
/*
* ...
*/
}
Tôi có một mảng của những trường hợp này. Tôi không thể tìm ra những quần short thực sự mất 2 byte hoặc họ mất anyway 4 byte?
Và tôi cần chuyển danh sách các đối tượng này qua AIDL dưới dạng List<Parcelable>
. Bưu kiện không được readShort()
và writeShort()
, nó chỉ có thể hoạt động với int
. Vì vậy, để sử dụng ngắn ở đây quá tôi phải tự đóng gói hai quần short của tôi vào một int, bưu kiện nó, và sau đó giải nén lại. Trông quá khó chịu.
Bạn có thể cho tôi biết có bao nhiêu byte quần short không, và có sử dụng ngắn gọn thay vì int ở đây không?
UPDATE:
tôi cập nhật câu hỏi của tôi cho độc giả trong tương lai.
Vì vậy, tôi đã viết một ứng dụng thử nghiệm và tôi đã tìm ra rằng trong trường hợp của tôi hoàn toàn không có lý do để sử dụng short
, bởi vì nó có cùng một không gian như int
. Nhưng nếu tôi xác định mảng quần short như thế:
protected short[] myValues[2];
sau đó phải mất ít không gian hơn mảng ints:
protected int[] myValues[2];
vì vậy, nó có vẻ như không có lý do để sử dụng ngắn nếu tôi cố gắng để đạt được sử dụng bộ nhớ ít hơn? –
Tôi sẽ viết một chương trình thử nghiệm để tạo ra một số lượng lớn các đối tượng và đo bộ nhớ miễn phí trước và sau với 'Runtime.freeMemory()' và chạy nó trên JVM sản xuất thực tế. Làm điều này cho cả hai cách xác định đối tượng và xem liệu bạn có thể phát hiện sự khác biệt hay không. Có thể có hoặc không có sự khác biệt, nhưng điều này sẽ cho bạn thấy chắc chắn. –
Tôi không nghĩ rằng nó được thực hiện, ít nhất là trong trường hợp mảng, nếu nó sẽ hỗ trợ JNI. –