3.2.1. Java Compiler Optimizations Due to the unique features of the J การแปล - 3.2.1. Java Compiler Optimizations Due to the unique features of the J ไทย วิธีการพูด

3.2.1. Java Compiler Optimizations

3.2.1. Java Compiler Optimizations
Due to the unique features of the JVM, such as the stack architecture, dynamic loading, and exception handling, Java native code compilers need to apply different types of optimizations than those used in traditional compilers. Some commonly implemented optimizations include mapping stack variables to machine registers, moving constant stack variables into native instructions, increasing the efficiency of exception handling, and in lining of methods. Mapping variables to machine registers increases native code performance since registers are much faster to access than memory. Registers can also be used to reduce the amount of stack duplication in Java. Specifically, each Java bytecode instruction consumes stack variables. Therefore, if a bytecode operand is used by multiple bytecode instructions, it must be duplicated on the stack. Register operands can be used over multiple instructions, however, eliminating the stack duplication overhead for those instructions.
Stack activity also can be reduced by moving constants on the stack into native instructions as immediate operands. Java bytecode instructions must receive constant operands from the stack. Since most architectures support instructions with immediate operands, this optimization eliminates the overhead of loading the constant into a register or memory location.
Exception overhead can be reduced by eliminating unnecessary exception checks and increasing the efficiency of the exception checking mechanism. For example,arrays are often used in iterative loops.If an array index value remains bounded inside of a loop, array bounds checks can be eliminated inside of the loop, which can produce significant performance advantages for large arrays.
Inlining of static methods is useful for speeding up the execution of method calls. However, the Java to bytecode compiler can only inline static methods within the class because static methods in other classes may be changed before actual execution. The implementation of any single class instantiation is stable at runtime and can therefore be inlined. The JIT compilers described in Section 3.2.2 can make use of this fact to inline small static methods to thereby reduce the overall number of static method calls. Dynamic methods can be converted to static methods given a set of classes using class hierarchy analysis [Dean et al. 1995]. If a virtual method has not been overloaded in the class hierarchy, dynamic calls to that method can be replaced by static calls. However, class hierarchy analysis may be invalidated if a new class is dynamically loaded into the program.
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
3.2.1 จาวาคอมไพเลอร์เพิ่มประสิทธิภาพ
เนื่องจากคุณลักษณะเฉพาะของ JVM เช่นสถาปัตยกรรมกองโหลดแบบไดนามิกและการจัดการข้อยกเว้นจาวาคอมไพเลอร์รหัสพื้นเมืองต้องใช้ชนิดที่แตกต่างกันของการเพิ่มประสิทธิภาพกว่าที่ใช้ในคอมไพเลอร์แบบดั้งเดิม บางการเพิ่มประสิทธิภาพการใช้งานทั่วไปรวมถึงการทำแผนที่ตัวแปรสแต็คที่จะลงทะเบียนเครื่องย้ายกองตัวแปรคงเป็นคำสั่งพื้นเมืองเพิ่มประสิทธิภาพของการจัดการข้อยกเว้นและในเยื่อบุของวิธีการ ตัวแปรการทำแผนที่เพื่อลงทะเบียนเครื่องเพิ่มประสิทธิภาพการทำงานรหัสพื้นเมืองตั้งแต่การลงทะเบียนจะได้เร็วขึ้นมากในการเข้าถึงหน่วยความจำกว่า ลงทะเบียนยังสามารถนำมาใช้เพื่อลดปริมาณของกองการทำสำเนาใน java โดยเฉพาะการเรียนการสอนในแต่ละ java bytecode กินตัวแปรสแต็ค ดังนั้นถ้าตัวถูกดำเนินการ bytecode ถูกนำมาใช้ตามคำแนะนำ bytecode หลายจะต้องมีการซ้ำกันในกอง ลงทะเบียนถูกดำเนินการสามารถนำไปใช้ในช่วงหลายคำแนะนำ แต่การกำจัดค่าใช้จ่ายที่กองการทำสำเนาสำหรับคำแนะนำเหล่านั้น
กิจกรรมกองยังสามารถลดลงได้โดยการย้ายค่าคงที่ในสแตกเป็นคำสั่งที่ถูกดำเนินพื้นเมืองทันที คำแนะนำ java bytecode จะต้องถูกดำเนินการอย่างต่อเนื่องได้รับจากกอง ตั้งแต่สถาปัตยกรรมส่วนใหญ่สนับสนุนคำแนะนำที่มีตัวถูกดำเนินการได้ทันทีเพิ่มประสิทธิภาพนี้จะช่วยลดค่าใช้จ่ายของการโหลดคงที่การลงทะเบียนหรือสถานที่หน่วยความจำ.
ค่าใช้จ่ายยกเว้นสามารถลดลงได้โดยการกำจัดการตรวจสอบข้อยกเว้นที่ไม่จำเป็นและเพิ่มประสิทธิภาพของกลไกการตรวจสอบข้อยกเว้น ตัวอย่างเช่นอาร์เรย์มักจะใช้ใน loops.if ซ้ำค่าดัชนีแถวยังคง จำกัด อยู่ในวงของอาร์เรย์ขอบเขตการตรวจสอบก็จะถูกกำจัดภายในของวงซึ่งสามารถผลิตได้เปรียบที่สำคัญสำหรับการดำเนินงานอาร์เรย์ขนาดใหญ่.
inlining ของวิธีการแบบคงที่จะเป็นประโยชน์สำหรับการเร่งขึ้นการดำเนินการของสายการ แต่เป็นจาวาเพื่อ bytecode คอมไพเลอร์สามารถใช้วิธีการแบบคงที่แบบอินไลน์ภายในชั้นเรียนเพราะวิธีการแบบคงที่ในชั้นเรียนอื่น ๆ อาจมีการเปลี่ยนแปลงก่อนที่จะดำเนินการที่เกิดขึ้นจริง การดำเนินการใด ๆ ต้นชั้นเดียวที่มีเสถียรภาพที่รันไทม์และจึงสามารถ inlined คอมไพเลอร์ JIT อธิบายไว้ในส่วน 3.22 สามารถใช้ประโยชน์จากความเป็นจริงนี้จะ inline วิธีการคงขนาดเล็กเพื่อลดจำนวนรวมของสายการคง วิธีการแบบไดนามิกสามารถแปลงเป็นวิธีการคงได้รับชุดของชั้นเรียนโดยใช้การวิเคราะห์ลำดับชั้น [คณบดีและอัล 1995] ถ้าวิธีเสมือนไม่ได้รับมากเกินไปในลำดับชั้นที่โทรแบบไดนามิกเพื่อวิธีการที่จะถูกแทนที่ด้วยการโทรแบบคงที่ อย่างไรก็ตามการวิเคราะห์ลำดับชั้นอาจจะถูกยกเลิกถ้าคลาสใหม่มีการโหลดแบบไดนามิกลงในโปรแกรม.
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
3.2.1 การจาวาคอมไพเลอร์เพิ่มประสิทธิภาพ
เนื่องจากคุณลักษณะเฉพาะของ JVM กองสถาปัตยกรรม การโหลดแบบไดนามิก และการ จัดการข้อยกเว้น จาวาคอมไพเลอร์ภาษารหัสที่จำเป็นต้องใช้เพิ่มประสิทธิภาพกว่าใช้คอมไพเลอร์แบบชนิดต่าง ๆ เพิ่มประสิทธิภาพบางอย่างดำเนินการโดยทั่วไปมีการแมปแปรกองทะเบียนเครื่อง ย้ายกองคงตัวแปรเป็นคำพื้นเมือง เพิ่มประสิทธิภาพ ของการจัดการข้อยกเว้น และซับวิธี แม็ปตัวแปรเพื่อลงทะเบียนเครื่องจักรเพิ่มประสิทธิภาพรหัสดั้งเดิมตั้งแต่ลงทะเบียนเร็วกว่าหน่วยความจำถึง ลงทะเบียนสามารถใช้เพื่อลดจำนวนซ้ำกองในจาวา โดยเฉพาะ แต่ละคำสั่ง bytecode Java ใช้ตัวแปรกอง ดังนั้น ถ้าใช้คำสั่งหลาย bytecode ดำเนิน bytecode มันต้องถูกทำซ้ำในกองซ้อน ตัวถูกดำเนินการลงทะเบียนสามารถใช้ผ่านหลายขั้นตอน อย่างไรก็ตาม ตัดซ้ำกองค่าใช้จ่ายสำหรับคำแนะนำเหล่านั้น
กิจกรรมกองยังจะลดลง โดยเลื่อนคงกองเป็นคำพื้นเมืองเป็นตัวถูกดำเนินการทันที คำสั่ง Java bytecode ต้องรับตัวถูกดำเนินการอย่างต่อเนื่องจากกองซ้อน เนื่องจากสถาปัตยกรรมส่วนมากสนับสนุนคำแนะนำกับตัวถูกดำเนินการทันที เพิ่มประสิทธิภาพนี้เอาค่าใช้จ่ายในลักษณะค่าคงการลงทะเบียนหรือหน่วยความจำตำแหน่ง
สามารถลดค่าใช้จ่ายในข้อยกเว้น โดยตัดข้อยกเว้นที่ไม่จำเป็นตรวจสอบ และเพิ่มประสิทธิภาพของกลไกการตรวจสอบข้อยกเว้น ตัวอย่าง อาร์เรย์มักใช้ในการวนรอบซ้ำถ้าค่าดัชนีอาร์เรย์เหลือกี่ในวน การตรวจสอบขอบเขตของอาร์เรย์สามารถตัดออกภายในลูป ซึ่งสามารถสร้างผลกระทบต่อประสิทธิภาพประโยชน์สำหรับอาร์เรย์ขนาดใหญ่ได้
Inlining วิธีคงจะเป็นประโยชน์สำหรับการเร่งการเรียกวิธี อย่างไรก็ตาม Java ให้ bytecode คอมไพเลอร์สามารถเฉพาะไลน์คงวิธีภายในคลาสเนื่องจากวิธีการแบบคงที่ในชั้นเรียนอื่น ๆ อาจเปลี่ยนแปลงก่อนที่จะดำเนินการจริง ปฏิบัติใด ๆ instantiation คลาเดียวมีเสถียรภาพขณะใช้งานจริง และดังนั้นสามารถ inlined คอมไพเลอร์ JIT ที่อธิบายไว้ในหัวข้อ 3.22 สามารถทำให้ใช้ความจริงนี้กับไลน์วิธีคงเล็กจึงลดจำนวนรวมเรียกวิธีการแบบคงได้ วิธีการแบบไดนามิกสามารถแปลงเป็นวิธีการแบบคงที่กำหนดชุดของคลาสที่ใช้วิเคราะห์ลำดับชั้นคลา [คณบดี et al. 1995] ถ้าไม่ได้เกิดในลำดับชั้นคลาวิธีเสมือน เรียกวิธีการแบบไดนามิกสามารถถูกแทนที่ ด้วยคงเรียก อย่างไรก็ตาม วิเคราะห์ลำดับชั้นคลาอาจยกเลิกหากชั้นใหม่แบบไดนามิกโหลดเข้าในโปรแกรมได้
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
3.2.1 . Java คอมไพเลอร์
ตามมาตรฐานเนื่องจากได้รับการปรับแต่งเพื่อความโดดเด่นที่เป็นเอกลักษณ์ของของ Sun JVM แล้ว Control Panel เช่นสถาปัตยกรรม Stack แบบไดนามิกการโหลดและการจัดการกับความผิดปกติคอมไพเลอร์รหัสพื้นเมือง Java จำเป็นต้องใช้ ประเภท ที่แตกต่างกันไปของการปรับแต่งมากกว่าที่ใช้ในคอมไพเลอร์แบบดั้งเดิม ได้รับการปรับแต่งโดยทั่วไปจะได้นำไปใช้บางส่วนรวมถึงตัวแปรกองแผนที่ไปยังเครื่องบันทึกการเคลื่อนไหวตัวแปร Stack คงที่ในคำแนะนำพื้นเมืองการเพิ่ม ประสิทธิภาพ ของการจัดการกับความผิดปกติและอยู่ในลายเส้นของวิธีการ การทำแผนที่เป็นตัวแปรสำคัญไปยังเครื่องบันทึกจะช่วยเพิ่ม ประสิทธิภาพ รหัสพื้นเมืองตั้งแต่ registers ได้รวดเร็วมากขึ้นในการเข้าใช้หน่วยความจำมากกว่า ลงทะเบียนสามารถใช้เพื่อลดจำนวนการทำซ้ำ Stack ในเกาะชวายัง โดยเฉพาะตัวแปร Java bytecode การเรียนการสอนจะใช้ชุดแต่ละราย. ดังนั้นหากค่าด้านซ้ายมือ bytecode ที่ถูกใช้โดยคำแนะนำ bytecode หลายรายการจะต้องถูกคัดลอกบนชุดที่ ตัวดำเนินการลงทะเบียนสามารถใช้งานผ่านหลายขั้นตอนอย่างไรก็ตามการลดการทำซ้ำกองที่เหนือศีรษะสำหรับคำแนะนำที่
การทำงานของกองยังสามารถลดลงได้โดยการย้ายค่าคงที่ในชุดที่เข้าไปในคำแนะนำแบบเนทีฟเป็นตัวดำเนินการได้ทันที คำแนะนำ bytecode Java จะต้องได้รับอย่างต่อเนื่องจากชุดประมวลผลชุดนี้ การสนับสนุนมากที่สุดนับตั้งแต่สถาปัตยกรรมคำแนะนำด้วยตัวดำเนินการการปรับแต่งได้ทันทีซึ่งจะช่วยลดค่าใช้จ่ายของการโหลดอย่างต่อเนื่องเข้าไปในลงทะเบียนหรือตำแหน่งหน่วยความจำ.
ค่าใช้จ่ายด้านการยกเว้นสามารถลดลงได้โดยขจัดตรวจสอบความผิดปกติโดยไม่จำเป็นและการเพิ่ม ประสิทธิภาพ ของกลไกการตรวจสอบความผิดปกติได้ ตัวอย่างเช่นอาเรย์มีใช้ในหูฝึกฝนตามหากค่าดัชนีความหลากหลายที่ยังคงอยู่แวดล้อมในการต่อพ่วงจะตรวจสอบนอกสนามความหลากหลายสามารถได้รับการกำหนดในส่วนของการต่อพ่วงซึ่งสามารถผลิตได้อย่างมีนัยสำคัญสำหรับ ประสิทธิภาพ การทำงานขนาดใหญ่อาเรย์.
บ่อยครั้งinlining วิธีใดวิธีหนึ่งคงที่จะเป็นประโยชน์สำหรับความเร็วขึ้นการประมวลผลการโทรวิธี แต่ถึงอย่างไรก็ตาม Java ที่ bytecode คอมไพเลอร์สามารถในบรรทัดวิธีการแบบสแตติกในระดับคงที่เพราะวิธีการในชั้นเรียนอื่นๆอาจมีการเปลี่ยนแปลงได้ก่อนทำจริงเท่านั้น การนำไปใช้งานของ instantiation Class แบบเดี่ยวมีความมั่นคงที่ใช้งานและสามารถ inlined ดังนั้น ด่านอีป้องคอมไพเลอร์อธิบายไว้ในหัวข้อ 3.22 สามารถทำให้การใช้ความจริงข้อนี้ไปในบรรทัดวิธีใดวิธีหนึ่งแบบสแตติกขนาดเล็กซึ่งจะช่วยลดจำนวนการโดยรวมของสายวิธีแบบสแตติก วิธีการแบบไดนามิกสามารถแปลงเป็นวิธีการแบบสแตติกให้ตั้งค่าของชั้นเรียนโดยใช้ Class ลำดับชั้นการวิเคราะห์[คณบดี et al . 1995 ] หากใช้วิธีการเสมือนไม่ได้รับการโอเวอร์โหลดในลำดับชั้นระดับ First Class ที่สายแบบไดนามิกในวิธีการที่สามารถแทนที่ด้วยสายไฟฟ้าสถิต แต่ถึงอย่างไรก็ตามการวิเคราะห์ลำดับชั้น Class อาจเป็นโมฆะหากคลาสใหม่จะโหลดเข้าสู่โปรแกรมไดนามิก.
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2024 I Love Translation. All reserved.

E-mail: