1. จุดประสงค์ของการทำสิ่งนี้ของเรา:
1. ประสิทธิภาพ (สำคัญที่สุด)
2. การอ่านง่ายต่อการบำรุงรักษาในระยะต่อมา (ยังสำคัญ)
2. ข้อกำหนดสำหรับการเพิ่มประสิทธิภาพรหัส:
1. ลดปริมาตรของรหัส
2. ปรับปรุงประสิทธิภาพการทำงานของรหัส
3. การเพิ่มประสิทธิภาพของรหัสที่ใช้กันทั่วไป:
1. พยายามนำวัตถุกลับมาใช้ซ้ำ:
โดยเฉพาะการใช้วัตถุสตริงซ้ำ การประกบสตริงที่ใช้กันมากที่สุด:
เมื่อพบการเช็ดสตริงบ่อยครั้ง อย่าลืมใช้ StringBuilder/StringBuffer
ตัวอย่างเช่น:
arraylist <String> รายการ; StringBuilder Builder = new StringBuilder ();
เหตุผล: เครื่องเสมือน Java ไม่เพียง แต่ต้องใช้เวลาในการสร้างวัตถุ แต่ยังต้องใช้เวลาในการประมวลผลเวลาและการรีไซเคิลวัตถุ
2. ใช้ตัวแปรท้องถิ่นหากเป็นไปได้:
ตัวแปรท้องถิ่นถูกสร้างขึ้นในสแต็กและถูกสร้างขึ้นอย่างรวดเร็วและหายไปโดยอัตโนมัติหลังการใช้งานโดยไม่ต้องรวบรวมขยะเพิ่มเติม
ตัวแปรคงที่ตัวแปรอินสแตนซ์ ฯลฯ ถูกสร้างขึ้นในกองและความเร็วในการสร้างช้าและยังต้องอาศัยกลไกการรวบรวมขยะ Java ในการประมวลผล
3. ปิดการไหลในเวลา:
ในการพัฒนาโปรแกรม Java หลังจากการดำเนินการ I/O และฐานข้อมูลเสร็จสมบูรณ์คุณต้องจำไว้ว่าต้องปิดการไหล
สาเหตุ: การไม่ปิดการไหลอาจทำให้เกิดค่าใช้จ่ายที่ดีกับระบบและอาจมีผลกระทบร้ายแรงต่อข้อมูล
4. ใช้การโหลดขี้เกียจ
Lazy Loading: สร้างวัตถุนี้เฉพาะเมื่อจะใช้
ตัวอย่างเช่น:
string prefix = "gebi";
แทนที่ด้วย:
if ("laowang" .equals (ชื่อ)) {string prefix = "gebi";5. หลีกเลี่ยงการใช้ลอง ... จับลูปใช้ลอง ... จับภายนอกลูป
6.Try ... จับไม่ควรใหญ่เกินไป
อย่าใส่รหัสที่ไร้ประโยชน์ทั้งหมดนั่นคือข้อยกเว้นจะไม่ถูกโยนลงไปในการลอง ... จับบล็อกและลดขนาดของการลอง ... บล็อกรหัสจับ
ตรวจสอบให้แน่ใจว่าการอ่านการบำรุงรักษาและความทนทานของรหัส
7. พยายามหลีกเลี่ยงการสร้างการอ้างอิงถึงวัตถุภายในลูป
โดยเฉพาะอย่างยิ่งเมื่อปริมาณการไหลเวียนมีขนาดใหญ่
ในขณะที่ (i <1000) {Object Object = New Object ();ขอแนะนำให้แก้ไขเป็น:
Object Object = null;
ทุกครั้งที่วัตถุใหม่ () เป็นของใหม่การอ้างอิงวัตถุวัตถุจะชี้ไปที่วัตถุวัตถุ
เมื่อมีลูปจำนวนมากตัวอย่างเช่นประเภทแรก JVM จะสร้างการอ้างอิง 1,000 รายการไปยังวัตถุในขณะที่ประเภทที่สองมีการอ้างอิงวัตถุวัตถุเดียวในหน่วยความจำ สิ่งนี้ช่วยประหยัดพื้นที่หน่วยความจำได้อย่างมาก
8. อย่าใช้ตัวแปรคงที่ตามต้องการ
เมื่อวัตถุถูกอ้างอิงโดยตัวแปรที่ประกาศคงที่ตัวเก็บขยะ Java จะไม่ทำความสะอาดหน่วยความจำกองที่ถูกครอบครองโดยวัตถุ
หน่วยความจำฮีปที่ถูกครอบครองโดยตัวแปรคงที่จะไม่ถูกปล่อยออกมาจนกว่าโปรแกรมที่ตัวแปรจะอยู่ นั่นคือวัฏจักรชีวิตของตัวแปรคงที่ = วัฏจักรชีวิตของชั้นเรียน
9. อย่าสร้างวัตถุที่ไม่ได้ใช้และอย่านำเข้าชั้นเรียนที่ไม่ได้ใช้
10. ใช้สตรีม I/O บัฟเฟอร์:
สตรีม I/O บัฟเฟอร์สามารถปรับปรุงประสิทธิภาพของ I/O ได้อย่างมาก BufferedWriter, BufferedReader, BufferedInputStream, BufferedOutputStream
11. แปลงการห่อข้อมูลเป็นสตริงที่จะใช้: ToString
จำนวนเต็ม i = 1;
แปลงข้อมูลการห่อเป็นการจัดอันดับความเร็วของสตริง:
i.toString> string.valueof (i)> "" + i
12. ประสิทธิภาพการเดินทางผ่าน: ชุดค่าเริ่มต้น> คีย์เซ็ต
// entryset () สำหรับ (รายการ <สตริง, สตริง> รายการ: map.entryset ()) {string key = entry.getKey (); : " + value);} // รวบรวมและลง // keyset () สำหรับ (คีย์สตริง: map.keyset ()) {ค่าสตริง = map.get (คีย์); system.out.println (คีย์ +"::: " + ค่า);}13. เกี่ยวกับคอลเล็กชั่นการสำรวจของตัววนซ้ำและ foreach ()
บทนำสู่อัลกอริทึมกล่าวว่า: อัลกอริทึมมีวัตถุประสงค์เพื่อปรับปรุงประสิทธิภาพของพื้นที่และประสิทธิภาพเวลา แต่บ่อยครั้งที่เวลาและพื้นที่ไม่สามารถอยู่ร่วมกันได้
ประสิทธิภาพเวลา: ตัววนซ้ำ> foreach ()
ความสามารถในการอ่านรหัส: foreach ()> iterator
// iterator set <entry <string, string >> entryset = map.entryset (); String> iter.next ();
ตัดกัน:
// foreach () สำหรับ (รายการ <สตริง, สตริง> รายการ: map.entryset ()) {สตริงคีย์ = entry.getKey (); : " + ค่า);}โดยส่วนตัวแล้วฉันเชื่อว่าขอแนะนำให้ใช้ตัววนซ้ำเพื่อสำรวจคอลเลกชันเมื่อประมวลผลข้อมูลขนาดใหญ่
อย่างไรก็ตามสำหรับการประมวลผลข้อมูลขนาดเล็ก foreach () ยังคงใช้สำหรับการอ่านและการบำรุงรักษาในภายหลัง
ทั้งสองควรมีความเชี่ยวชาญเมื่อใช้ร่วมกัน