Tăng tốc cho chương trình Java
Để chương trình Java chạy nhanh hơn, bạn có thể dùng các công cụ như DashO Pro, Optimize It (trong JBuilder của Borland) hoặc JProbe,.... Ở đây tôi xin giới thiệu vài cách đơn giản liên quan đến việc viết mã và biên dịch bằng JDK (bộ công cụ lập trình Java):
1. Dùng tham số -O khi biên dịch. Khi chạy trình biên dịch javac, ta chỉ cần bổ sung thêm tham số -O, trình biên dịch sẽ tối ưu hóa mã để tạo ra mã chạy nhanh hơn. Ví dụ thay vì đánh dòng lệnh biên dịch là
C:\MyProg\javac MyProg.java
ta thay bằng dòng lệnh sau
C:\MyProg\javac –O MyProg.java
2. Tránh dùng các biểu thức bất biến trong vòng lặp. Chẳng hạn, bạn xem đoạn mã ngắn sau:
for(int i = 0;i < s.length;i++)
a[i] = s[i] + b * c;
Như bạn thấy, cứ sau mỗi lần lặp, biểu thức b * c được tính lại trong khi nó không thay đổi theo vòng lặp. Để tránh mất thời gian cho tính toán không cần thiết như vậy, bạn sửa lại như sau:
float tmp = b * c;
for(int i = 0;i < s.length;i++)
a[i] = s[i] + tmp;
Nhờ vậy, biểu thức b * c chỉ được tính một lần chứ không phải là s.length lần như trước. Điều này đặc biệt quan trọng đối với những chương trình nặng về tính toán.
3. Loại bỏ những biểu thức con giống nhau trong một khối lệnh. Chẳng hạn, trong đoạn mã như sau:
double d = a * Math.sqrt(r);
double e = b * Math.sqrt(r);
double f = c * Math.sqrt(r);
bạn thấy rõ việc tính căn số Math.sqrt(r) lặp lại nhiều lần. Tính căn số vốn không phải là nhiệm vụ nhẹ nhàng nhưng đôi khi do "tiện tay sao chép", ta vô tình buộc chương trình phải lặp lại việc tính toán không cần thiết, gây tốn thời gian một cách vô ích. Bạn tối ưu hóa đoạn mã trên như sau:
double tmp = Math.sqrt(const);
double d = a * tmp;
double e = b * tmp;
double f = c * tmp;
Nhờ vậy hàm Math.sqrt(r) chỉ được gọi một lần và kết quả được lưu lại trong biến tạm tmp. Các câu lệnh tiếp theo chỉ cần lấy kết quả có sẵn trong biến tmp.
4. Dùng các toán tử gán tối ưu thay cho toán tử gán thông thường. Bạn hãy xem đoạn mã:
for(int i = 0;i < a.length;i++)
a[i] = a[i] + const;
Thay vì dùng toán tử gán thông thường, bạn có thể dùng toán tử gán tối ưu hóa += như sau (tương tự như trong C/C++):
for(int i = 0;i < a.length;i++)
a[i] += const;
Các toán tử gán tối ưu hóa để bạn tham khảo.
Toán tử Mô tả Ví dụ
++ Tăng rồi gán a++
-- Giảm rồi gán a--
+= Cộng rồi gán a+=b
-= Trừ rồi gán a-=b
*= Nhân rồi gán a*=b
/= Chia rồi gán a/=b
%= Lấy phần dư rồi gán a%=b
|= OR rồi gán a|=b
&= AND rồi gán a&=b
^= XOR rồi gán a^=b
<<= Dịch trái rồi gán a<<=b
>>= Dịch phải rồi gán a>>=b
>>>= Dịch phải lấp đầy số 0 rồi gán a>>>=b
5. Hạn chế khởi tạo các đối tượng không thật sự cần thiết. Bạn đừng nghĩ rằng đối tượng chỉ là phận "bọt bèo", "muốn bao nhiêu cũng có". Mỗi đối tượng được tạo ra thông qua hàm dựng đều tiêu tốn một nguồn lực nhất định của hệ thống. Do vậy, ta chỉ nên khởi tạo những đối tượng thật sự cần thiết hoặc dùng chung đối tượng nếu có thể.
Theo Echip
Thứ Bảy, 26 tháng 12, 2009
Đăng ký:
Đăng Nhận xét (Atom)
Người theo dõi
Tìm kiếm Blog này
web link
Lưu trữ Blog
-
▼
2009
(25)
-
▼
tháng 12
(13)
- よいお年を!-Bonne Anne-Happy New Year!- Chúc Mừng Năm Mới!
- Câu hỏi hóc búa!!!
- Kỵ sĩ của chú ngựa thời gian
- Tăng tốc cho chương trình Java
- Một số hình ảnh chuyến thăm của ngài 吉田名予校長
- SỨC MẠNH CỦA SỰ THỬ THÁCH
- Tôi sẽ thay đổi cả thế giới
- BÀI HỌC CÂU CÁ
- Good luck- Bí mật của sự may mắn- 機会の秘密
- Nỗi buồn Hạc giấy
- Hàng xóm
- 思い出す。
- Không biết đề
-
▼
tháng 12
(13)

Không có nhận xét nào:
Đăng nhận xét