cuốn sách gpt4 ai đã làm

Tại sao Integer thành int to Integer nhanh gấp 10 lần int to Integer?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-02 08:53:07 28 4
mua khóa gpt4 Nike

Tôi có hai mảng có cùng kích thước và hai phương thức.

lớp công khai Khách hàng {
int tĩnh riêng tư [] int;
int tĩnh cuối cùng COUNT = 10000000;
số nguyên tĩnh riêng tư [];

public static void main(String[] args) {
Rand ngẫu nhiên = Random mới();
số nguyên = Số nguyên mới[COUNT];
for (int i = 0; i < số nguyên.length; i++) {
số nguyên[i] = rand.nextInt();
}

ints = int mới[COUNT];
for (int i = 0; i < ints.length; i++) {
ints[i] = rand.nextInt();
}

nguyên thủyToObject();
objectToPrimitiveToObject();
}

khoảng trống tĩnh công khai nguyên thủyToObject() {
bắt đầu dài = Ngày mới().getTime();
List object = new ArrayList<>(ints.length);
for (int i = 0; i < ints.length; i++) {
giá trị int = ints[i] + 1;
object.add(value); //Quyền anh
}
System.out.println("prim -> object = " + (new Date().getTime() - start));
}

đối tượng trống tĩnh công khaiToPrimitiveToObject() {
bắt đầu dài = Ngày mới().getTime();
List result= new ArrayList<>(integer.length);
for (int i = 0; i < số nguyên.length; i++) {
int value = số nguyên[i] + 1; //Mở hộp
result.add(value); //Quyền anh
}
System.out.println("obj -> prim -> object = " + (new Date().getTime() - start));
}
}

Tại sao phải mang theo đóng gói và mở hộp? objectToPrimitiveToObject() Tốt hơn là không mở hộp nguyên thủyToObject() Nhanh gấp 10 lần?

câu trả lời hay nhất

Tôi nghĩ đây là một yếu tố thể hiện cách bạn đánh giá mã của mình.

Tôi sử dụng JVM 1.7.0_09-XX:+AggressiveOpts -XX:CompileThreshold=1 Các điểm chuẩn sau đây đã được chạy:

nhập java.util.ArrayList;
nhập java.util.List;
nhập java.util.Random;

lớp công khai Chính {
int cuối cùng tĩnh COUNT = 1000000;
int tĩnh[] ints = int mới[COUNT];
số nguyên tĩnh[] số nguyên = số nguyên mới[COUNT];

khoảng trống tĩnh nguyên thủyToObject() {
List object = new ArrayList(ints.length);
for (int i = 0; i < ints.length; i++) {
giá trị int = ints[i] + 1;
object.add(value); // quyền anh
}
}

đối tượng trống tĩnhToPrimitiveToObject() {
List result= new ArrayList(integer.length);
for (int i = 0; i < số nguyên.length; i++) {
int value = số nguyên[i] + 1; //mở hộp
result.add(value); // quyền anh
}
}

public static void main(String[] args) {
Rand ngẫu nhiên = Random mới();
for (int i = 0; i < COUNT; ++i) {
int val = rand.nextInt();
ints[i] = val;
số nguyên[i] = val;
}
vì (int i = 0; i < 10; ++i) {
start_p dài = System.currentTimeMillis();
cho (int j = 0; j < 100; ++j) {
nguyên thủyToObject();
}
long end_p = System.currentTimeMillis();
start_o dài = System.currentTimeMillis();
cho (int j = 0; j < 100; ++j) {
objectToPrimitiveToObject();
}
long end_o = System.currentTimeMillis();
System.out.printf("p2o:%d o2p2o:%d\n", end_p - start_p, end_o - start_o);
}
}
}

Kết quả như sau:

p2o:2043 o2p2o:818
p2o:709 o2p2o:748
p2o:670 o2p2o:756
p2o:675 o2p2o:742
p2o:679 o2p2o:750
p2o:700 o2p2o:757
p2o:738 o2p2o:733
p2o:706 o2p2o:786
p2o:684 o2p2o:752
p2o:676 o2p2o:799

Như bạn có thể thấy, sau lần khởi động ban đầu,nguyên thủyToObject() Nhanh hơn, như người ta mong đợi từ một phương pháp đòi hỏi ít công sức hơn.

Để hoàn thiện hơn, tôi cũng đã thử nghiệm điều này bằng JDK 6 và quan sát thấy các kết quả tương tự.

Giới thiệu về java - Tại sao Integer thành int to Integer nhanh gấp 10 lần int to Integer? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/15586829/

28 4 0
Taklimakan
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress