เมื่อใช้วัตถุหลายอย่างหรือโครงสร้างข้อมูลขนาดใหญ่วิธีการปรับปรุงประสิทธิภาพคือการใช้การโหลดล่าช้าหรือการมอบหมาย (เพื่อนำไปใช้) การดำเนินการตามเวลา -เวลาได้รับการย่อให้สั้นที่สุดเท่าที่จะเป็นไปได้ไม่เคยรู้มาก่อน ฉันใช้ตัวอย่างบางส่วนเพื่ออธิบายว่าการใช้เทคโนโลยีการโหลดล่าช้าใน Java และให้แนวทางบางอย่างที่ง่ายกว่า (ใช้) และเป็นส่วนหนึ่งของภาษาหลักในภาษาอื่น ๆ
สถานการณ์การใช้งานคือการแสดงข้อมูลเมตาหลายร้อยรายการและวัตถุการวัดที่มีค่าควรแก่วัตถุโดเมนผ่าน JTable เริ่มต้นวัตถุโดเมนของเราที่สามารถบันทึกวัตถุสองประเภทในหน่วยความจำแม้ว่าจะมีเพียงข้อมูลเมตาบางส่วนเท่านั้นที่แสดงในรูปแบบ ใช้เวลาสองสามวินาทีในการสร้างแบบฟอร์มนี้และ (แต่) เราสามารถยอมรับ (ข้อมูล) ได้หลายร้อยครั้ง หลังจากทำการวิเคราะห์บางอย่างเราปรับปรุงการรับรู้ของเราและดูเหมือนว่า:
คลาสสาธารณะ DomainObject {Private DataParser Parser; = aparser;} สตริงสาธารณะ getheaderfield (ชื่อสตริง) {// ที่นี่เราแยกวิเคราะห์และไฟล์แผนที่ส่วนหัว (head.isempl ()) {header.addall (parser.header ());} return head.get (ชื่อ) ;} สาธารณะ iterable <data> getMeasurementValues () {// lazy-load อีกครั้งและแยกวิเคราะห์ข้อมูลถ้า (data.isempty ()) {data.addall (parser.measurements ());} ส่งคืนข้อมูล;}}}}}}}}}}}}
การปรับปรุงนี้ช่วยปรับปรุงการเข้ามาของเวลาแสดงผลและปรับปรุง (ความสามารถ) ของเราในการประมวลผลรายการข้อมูลขนาดใหญ่ของเรา โหลดข้อมูลทั้งหมดเกิดขึ้นเฉพาะเมื่อมีคนต้องการดูการวัดการวัดและคลิกสองครั้ง
Java ชนิดหนึ่งจะล่าช้าหลังจากรื้อกล่อง
// ขี้เกียจและเร็วเพราะการดำเนินการค่าใช้จ่ายจะดำเนินการเฉพาะเมื่อจำเป็นถ้า (acondition () && ราคาแพง ()) {... } // คำสั่งซื้อช้า (ยังคงขี้เกียจ ed!) ถ้า (ราคาแพง () && acondition ()) { .. }
เฟรมเวิร์กเลเยอร์ที่ยาวนานเช่น Hibernate มักจะเริ่มต้นเพื่อชะลอการโหลดเนื่องจากการเข้าถึงฐานข้อมูลและราคาส่งข้อมูลค่อนข้างสูงภายใต้สถานการณ์ปกติ
ฟังก์ชั่นภาษาส่วนใหญ่ขึ้นอยู่กับการกำหนดความล่าช้ารอบทิศทาง Scala ผสมฟังก์ชั่นภาษาที่เน้นวัตถุและแนะนำคำหลักที่ล่าช้าเพื่อทำให้สไตล์ Java ง่ายขึ้น
คลาสสาธารณะ DOM ArinObject (Parser: DataParser) {// ประเมินผลในการเข้าถึงครั้งแรกส่วนหัว Lazy Val ส่วนตัว = {parser.header ()} def getheadereld (ชื่อ: สตริง): s tring = {header.get (ชื่อ) .getorelse (" ")} // ประเมินผลการเข้าถึงครั้งแรก Lazy Val MesurementValues: iterable [data] = {parser.measurements ()}}}}
สรุปแล้ว
การชะลอการโหลดไม่ใช่เทคโนโลยีการปฏิวัติใหม่ แต่เป็นเครื่องมือที่มีประโยชน์มากเมื่อต้องรับมือกับข้อมูลขนาดใหญ่หรือทรัพยากรที่ชะลอตัว ในหลายกรณีคุณสามารถใช้เพื่อปรับปรุงประสิทธิภาพหรือใช้ด้วยตัวเอง
มันสามารถลดค่าใช้จ่ายในการใช้รหัส