3.2.2. Just-In-Time CompilersA Just-In-Time(JIT) compiler translates J การแปล - 3.2.2. Just-In-Time CompilersA Just-In-Time(JIT) compiler translates J ไทย วิธีการพูด

3.2.2. Just-In-Time CompilersA Just

3.2.2. Just-In-Time Compilers
A Just-In-Time(JIT) compiler translates Java bytecodes into equivalent native machine instructions as shown in Figure 2. This translation is performed at runtime immediately after a method is invoked. Instead of interpreting the code for an invoked method, the JIT compiler translates a method’s bytecodes into a sequence of native machine instructions. These native instructions are executed in place of the bytecodes. Translated bytecodes are then cached to eliminate redundant translation of bytecodes.
In most cases, executing JIT compiler generated native code is more efficient than interpreting the equivalent bytecodes since an interpreter identifies and interprets a bytecode every time it is encountered during execution. JIT compilation, on the other hand, identifies and translates each instruction only once—the first time a method is invoked. In programs with large loops or recursive methods, the combination of the JIT compilation and native code execution times can be drastically reduced compared to an interpreter. Additionally, a JIT compiler can speed up native code execution by optimizing the code it generates, as described in Section 3.2.1.
Since the total execution time of a Java program is a combination of compilation time and execution time, a JIT compiler needs to balance the time spent optimizing generated code against the time it saves by optimization. Code optimization is further limited by the scope of compilation. Since compilation occurs on demand for one class or one method at a time, it is difficult for a JIT compiler to perform nonlocal optimizations. Due to the time and scope restrictions of JIT compilation, JIT optimizations are generally simple ones that are expected to yield reasonably large performance gains compared to the optimization time.
Although JIT compilers are generally more efficient than interpreters, there are still advantages to using an interpreter. One advantage is that interpreters are better suited to debugging programs. Another advantage is that JIT compilation compiles an entire method at once, while interpretation translates only the instructions that actually are executed. If only a small percentage of the bytecodes in a method are ever executed and the method is rarely executed, the time spent on JIT compilation may never be recouped by the reduction in execution time.
Current JIT compilers offer a variety of target platforms and features. The Symantec Cafe JITis included in the Java 2 runtime environment for Windows 95/NT and Netscape Navigator [Symantec].Microsoftincludes a JIT with Internet Explorer for Windows 95/NT and Macintosh [Just-In-Time Compilation]. No published information is available about the implementation details of these JIT compilers.
IBM includes an optimizing JIT compiler in its IBM Developer Kit for Windows [Ishizaki et al. 1999; Suganuma et al. 2000]. This JIT compiler performs a variety of optimizations including method inlining, exception check elimination, common subexpression elimination, loop versioning, and code scheduling. The compiler begins by performing flow analysis to identify basic blocks and loop structure information for later optimizations. The bytecodes are transformed into an internal representation, called extended bytecodes, on which the optimizations are performed.
The optimizations begin with method inlining. Empty method calls originating from object constructors or small access methods are always inlined. To avoid code expansion (and thus, the resulting cache inefficiency) other method calls are inlined only if they are in program hotspots such as loops. Virtual method calls are handled by adding an explicit check to make sure that the inlined method is still valid. If the check fails, standard virtual method invocation is performed. If the referenced method changes frequently, the additional check and inlined code space adds additional overhead to the invocation. However, the referenced method is likely to remain the same in most instances, eliminating the cost of a virtual method lookup and invocation.
Following inlining, the IBM JIT compiler performs general exception check elimination and common subexpression elimination based on program flow information. The number of array bound exception checks is further reduced usingloop versioning. Loop versioning creates two versions of a target loop—a safe version with exception checking and an unsafe version without exception checking. Depending on the loop index range test at the entry point of the loop, either the safe or the unsafe version of the loop is executed.
At this point, the IBM JIT compiler generates native x86 machine code based on the extended bytecode representation. Certain stack manipulation semantics are detected in the bytecode by matching bytecode sequences known to represent specific stack operations. Register allocation is applied by assigning registers to stack variables first and then to local variables based on usage counts. Register allocation and code generation are performed in the same pass to reduce compilation time. Finally, the generated native code is scheduled within the basic block level to fit the requirements of the underlying machine.
Intel includes a JIT compiler with the VTune optimization package for Java that interfaces with the Microsoft JVM [Adl Tabatabai et al. 1998]. The Intel JIT compiler performs optimizations and gen erates code in a single pass without generating a complete internal representation of the program. This approach speeds up native code generation while limiting the scope of the optimizations to extended basic blocks only. The Intel JIT compiler applies common subexpression elimination (CSE) within basic blocks, local and global register allocation, and limited exception optimizations.
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
3.2.2 คอมไพเลอร์เพียงแค่ในเวลา
เพียงในเวลา (JIT) คอมไพเลอร์แปล bytecodes java เป็นเทียบเท่าคำแนะนำเครื่องพื้นเมืองตามที่แสดงในรูปที่ 2 การแปลนี้จะดำเนินการที่ runtime ทันทีหลังจากที่วิธีการจะเรียก แทนการแปลความหมายสำหรับวิธีการเรียกคอมไพเลอร์ JIT แปล bytecodes วิธีการที่เป็นลำดับของคำสั่งเครื่องพื้นเมืองคำแนะนำเหล่านี้พื้นเมืองจะดำเนินการในสถานที่ของ bytecodes bytecodes แปลจะถูกเก็บไว้แล้วในการขจัดความซ้ำซ้อนของการแปล bytecodes.
ในกรณีส่วนใหญ่การดำเนิน JIT รวบรวมรหัสพื้นเมืองที่สร้างขึ้นจะมีประสิทธิภาพมากกว่าการตีความ bytecodes เทียบเท่าตั้งแต่ระบุล่ามและแปลความหมาย bytecode ทุกครั้งที่จะพบในระหว่างการดำเนิน JIT สะสมในอีกทางหนึ่งระบุและแปลแต่ละการเรียนการสอนเพียงครั้งเดียวเป็นครั้งแรกวิธีที่จะเรียก ในโปรแกรมที่มีลูปขนาดใหญ่หรือวิธีการเวียนเกิดการรวมกันของการรวบรวม JIT และเวลาดำเนินการรหัสพื้นเมืองที่สามารถลดลงอย่างมากเมื่อเทียบกับล่าม นอกจากนี้คอมไพเลอร์ JIT สามารถเพิ่มความเร็วในการเรียกใช้รหัสพื้นเมืองโดยการเพิ่มประสิทธิภาพรหัสจะสร้างที่ตามที่อธิบายไว้ในส่วน 3.2.1.
ตั้งแต่เวลาดำเนินการรวมโปรแกรม java คือการรวมกันของเวลาการรวบรวมและใช้เวลาดำเนินการคอมไพเลอร์ JIT ต้องการเพื่อความสมดุลของเวลาที่ใช้ในการเพิ่มประสิทธิภาพของรหัสที่สร้างขึ้นกับเวลาที่จะบันทึกโดยการเพิ่มประสิทธิภาพ การเพิ่มประสิทธิภาพของรหัสจะถูก จำกัด มากขึ้นโดยขอบเขตของการรวบรวม ตั้งแต่การรวบรวมเกิดขึ้นในความต้องการสำหรับหนึ่งชั้นเรียนหรือวิธีการอย่างใดอย่างหนึ่งที่เวลามันเป็นเรื่องยากสำหรับคอมไพเลอร์ JIT เพื่อดำเนินการเพิ่มประสิทธิภาพ nonlocal เนื่องจากเวลาและข้อ จำกัด ขอบเขตของการรวบรวม JIT, การเพิ่มประสิทธิภาพ JIT มักจะมีคนที่ง่ายๆที่คาดว่าจะมีผลกำไรที่มีขนาดใหญ่พอสมควรที่มีประสิทธิภาพเมื่อเทียบกับเวลาการเพิ่มประสิทธิภาพ.
แม้ว่า JIT คอมไพเลอร์มักจะมีประสิทธิภาพมากขึ้นกว่าล่ามยังมีประโยชน์ในการใช้ ล่ามข้อดีอย่างหนึ่งคือการแปลที่ดีเหมาะกับการแก้จุดบกพร่องโปรแกรม ประโยชน์อีกประการหนึ่งก็คือการรวบรวม JIT รวบรวมวิธีการทั้งหมดในครั้งเดียวในขณะที่การตีความแปลเพียงคำแนะนำที่จริงจะดำเนินการ ถ้าเพียงร้อยละขนาดเล็กของ bytecodes ในวิธีการที่เคยดำเนินการและวิธีการที่ไม่ค่อยจะดำเนินการเวลาที่ใช้ในการรวบรวม JIT อาจไม่เคยได้รับการชดเชยโดยการลดเวลาในการดำเนินการ.
คอมไพเลอร์ JIT ในปัจจุบันมีความหลากหลายของแพลตฟอร์มเป้าหมายและคุณสมบัติ คาเฟ่ jitis ไซแมนเทครวมอยู่ในสภาพแวดล้อมรันไทม์ java 2 สำหรับ Windows 95/nt และ Netscape Navigator [Symantec]. microsoftincludes JIT กับ Internet Explorer สำหรับ Windows และ Macintosh 95/nt [รวบรวมเพียงในเวลา]ข้อมูลที่เผยแพร่ไม่สามารถใช้ได้เกี่ยวกับรายละเอียดการดำเนินการของคอมไพเลอร์ JIT เหล่านี้.
ibm รวมถึงการเพิ่มประสิทธิภาพของคอมไพเลอร์ JIT ในชุดพัฒนาของไอบีเอ็มสำหรับ Windows [Ishizaki ตอัล 1999; Suganuma ตอัล 2000] คอมไพเลอร์ JIT นี้ดำเนินการความหลากหลายของการเพิ่มประสิทธิภาพรวมทั้งวิธีการ inlining ตรวจสอบข้อยกเว้นการกำจัดกำจัดนิพจน์ย่อยทั่วไปห่วงเวอร์ชัน,และการกำหนดรหัส คอมไพเลอร์จะเริ่มต้นด้วยการวิเคราะห์การไหลในการระบุบล็อกข้อมูลพื้นฐานและโครงสร้างห่วงสำหรับการเพิ่มประสิทธิภาพในภายหลัง bytecodes กลายเป็นแทนภายในที่เรียกว่า bytecodes ขยายที่เพิ่มประสิทธิภาพจะถูกดำเนินการ. การเพิ่มประสิทธิภาพ
เริ่มต้นด้วยวิธีการ inliningสายการว่างที่เกิดจากการก่อสร้างของวัตถุหรือวิธีการเข้าถึงขนาดเล็ก inlined เสมอ เพื่อหลีกเลี่ยงการขยายตัวรหัส (และทำให้ขาดประสิทธิภาพแคชผล) โทรวิธีการอื่น ๆ ที่ inlined เฉพาะในกรณีที่พวกเขาอยู่ในจุดที่โปรแกรมเช่นลูป สายการเสมือนได้รับการจัดการโดยการเพิ่มการตรวจสอบที่ชัดเจนเพื่อให้แน่ใจว่าวิธีการ inlined ยังคงถูกต้อง ถ้าการตรวจสอบล้มเหลวมาตรฐานวิธีการภาวนาเสมือนจะดำเนินการ หากวิธีการอ้างอิงที่มีการเปลี่ยนแปลงบ่อยการตรวจสอบเพิ่มเติมและพื้นที่รหัส inlined จะเพิ่มค่าใช้จ่ายเพิ่มเติมในการอุทธรณ์ แต่วิธีการที่อ้างถึงมีแนวโน้มที่จะยังคงเหมือนเดิมในกรณีส่วนใหญ่การกำจัดค่าใช้จ่ายของการค้นหาวิธีการที่เสมือนจริงและการภาวนา.
inlining ต่อไปนี้JIT คอมไพเลอร์ ibm ดำเนินการข้อยกเว้นทั่วไปการกำจัดการตรวจสอบและการกำจัด subexpression ร่วมกันบนพื้นฐานของข้อมูลการไหลของโปรแกรม จำนวนของอาร์เรย์ผูกพันการตรวจสอบข้อยกเว้นจะลดลงต่อไป usingloop เวอร์ชัน ห่วงเวอร์ชันสร้างสองรุ่นของวงเวอร์ชันเป้าหมายปลอดภัยกับการตรวจสอบและข้อยกเว้นรุ่นที่ไม่ปลอดภัยโดยไม่ต้องตรวจสอบข้อยกเว้นขึ้นอยู่กับผลการทดสอบช่วงที่ดัชนีห่วงที่จุดเริ่มต้นของวงทั้งที่ปลอดภัยหรือรุ่นที่ไม่ปลอดภัยของวงที่จะดำเนินการ
ที่จุดนี้ JIT คอมไพเลอร์ ibm สร้างรหัสเครื่อง x86 พื้นเมืองขึ้นอยู่กับการเป็นตัวแทน bytecode ขยาย ความหมายกองการจัดการบางอย่างมีการตรวจพบใน bytecode โดยการจับคู่ลำดับ bytecode ที่รู้จักกันเพื่อเป็นตัวแทนของการดำเนินงานของสแต็คที่เฉพาะเจาะจงการจัดสรรลงทะเบียนถูกนำมาใช้โดยการกำหนดลงทะเบียนไปกองตัวแปรก่อนแล้วจึงไปยังตัวแปรท้องถิ่นขึ้นอยู่กับจำนวนการใช้งาน ลงทะเบียนการจัดสรรและการสร้างรหัสจะดำเนินการในการส่งผ่านเดียวกันในการลดเวลาในการรวบรวม ในที่สุดรหัสพื้นเมืองที่สร้างขึ้นที่กำหนดไว้ในระดับที่ป้องกันขั้นพื้นฐานเพื่อให้เหมาะสมกับความต้องการของเครื่องต้นแบบ.
อินเทลมีคอมไพเลอร์ JIT กับแพคเกจการเพิ่มประสิทธิภาพในการ VTune java ที่เชื่อมต่อกับไมโครซอฟท์ JVM [adl Tabatabai ตอัล 1998] คอมไพเลอร์อินเทล JIT ดำเนินการเพิ่มประสิทธิภาพและเก็ erates รหัสผ่านเดียวโดยไม่สร้างการแสดงภายในที่สมบูรณ์ของโปรแกรมวิธีการนี​​้เพิ่มความเร็วในการสร้างรหัสพื้นเมืองในขณะที่การ จำกัด ขอบเขตของการเพิ่มประสิทธิภาพในการบล็อกพื้นฐานขยายเพียง คอมไพเลอร์อินเทล JIT ใช้กำจัดนิพจน์ย่อยทั่วไป (CSE) ภายในบล็อกขั้นพื้นฐานจัดสรรการลงทะเบียนในประเทศและทั่วโลกและการเพิ่มประสิทธิภาพการยกเว้น จำกัด .
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
3.2.2 เพียงเวลาคอมไพเลอร์
A Just-In-Time(JIT) คอมไพเลอร์แปล Java bytecodes เป็นคำสั่งภาษาเครื่องเท่าดังแสดงในรูปที่ 2 แปลนี้จะดำเนินการที่รันไทม์ทันทีเรียกวิธี แทนที่จะตีความรหัสสำหรับวิธีการเรียกใช้ คอมไพเลอร์ JIT แปล bytecodes ของวิธีการเป็นลำดับของคำสั่งภาษาเครื่อง คำแนะนำเหล่านี้เจ้าจะดำเนินแทน bytecodes แล้ว bytecodes แปลจะถูกเก็บไว้เพื่อกำจัดแปลซ้ำซ้อนของ bytecodes
ใหญ่ ดำเนินการ JIT คอมไพเลอร์สร้างรหัสภาษาจะมีประสิทธิภาพมากกว่าการทำนาย bytecodes เทียบเท่าเนื่องจากระบุการล่าม และแปล bytecode เป็นทุกครั้งที่ได้พบในระหว่างการดำเนินการ คอมไพล์ JIT บนมืออื่น ๆ ระบุ และแปลคำสั่งแต่ละครั้งซึ่งครั้งแรกที่เรียกวิธีการ ในโปรแกรมมีวิธีการเกิดซ้ำหรือวนรอบใหญ่ คอมไพล์ JIT และรหัสภาษาที่เวลาการดำเนินการสามารถลดลงอย่างรวดเร็วเมื่อเทียบกับการล่าม นอกจากนี้ คอมไพเลอร์ JIT สามารถเร่งความเร็วโค้ดภาษา โดยเพิ่มรหัสที่สร้าง ตามที่อธิบายไว้ในส่วน 3.2.1.
เนื่องจากเวลาดำเนินการทั้งหมดของโปรแกรมจาวา คอมไพล์เวลาและเวลาดำเนินการ คอมไพเลอร์ JIT จำเป็นต้องใช้เวลาสร้างรหัสประสิทธิภาพกับเวลาที่จะบันทึก โดยปรับให้เหมาะสม เพิ่มเติมมีจำกัดรหัสเพิ่มประสิทธิภาพ โดยขอบเขตของการคอมไพล์ เนื่องจากความต้องการระดับหนึ่งหรือวิธีหนึ่งครั้ง เกิดคอมไพล์ มันเป็นเรื่องยากสำหรับคอมไพเลอร์ JIT การเพิ่มประสิทธิภาพ nonlocal เนื่องจากจำกัดเวลาและขอบเขตของการคอมไพล์ JIT เพิ่มประสิทธิภาพของจิตคนทั่วไปอย่างที่คาดว่าผลตอบแทนกำไรประสิทธิภาพค่อนข้างใหญ่เมื่อเทียบกับเวลาที่เหมาะที่สุด
คอมไพเลอร์ JIT แม้ว่าโดยทั่วไปมีประสิทธิภาพมากขึ้นกว่าล่าม ยังมีการใช้การแปลนั้น ประโยชน์ข้อหนึ่งคือ ล่ามดีเหมาะสมกับการดีบักโปรแกรม ข้อดีอีกคือ คอมที่คอมไพล์ JIT ไพล์วิธีการทั้งหมดครั้ง ในขณะที่ล่ามแปลคำแนะนำที่จะ ดำเนินการเท่านั้น ถ้าเดียวเคยดำเนินการเล็กน้อยของ bytecodes ในวิธีการ และวิธีการไม่ค่อยดำเนิน การ เวลาที่ใช้ในการคอมไพล์ JIT อาจไม่ recouped โดยการลดลงในเวลาปฏิบัติการ
คอมไพเลอร์ JIT ปัจจุบันหลากหลายแพลตฟอร์มเป้าหมายและลักษณะการทำงานได้ JITis คาเฟ่ของ Symantec รวมใน Java 2 สภาพแวดล้อมรันไทม์สำหรับ Windows 95/NT และสเคป [Symantec]Microsoftincludes จิตกับ Internet Explorer ใน Windows 95/NT และ Macintosh [คอมไพล์เพิ่ง--เวลา] ไม่เผยแพร่มีข้อมูลเกี่ยวกับรายละเอียดการใช้งานของคอมไพเลอร์ JIT เหล่านี้
IBM มีคอมไพเลอร์ JIT การประสิทธิภาพของ IBM พัฒนาชุดสำหรับ Windows [Ishizaki et al. 1999 Suganuma et al. 2000] คอมไพเลอร์ JIT นี้ดำเนินการหลากหลายรวมทั้งวิธี inlining ยกเว้นเครื่องตัด ตัดออกนิพจน์ย่อยทั่วไป รุ่นวน การเพิ่มประสิทธิภาพ และรหัสการจัดกำหนดการ คอมไพเลอร์เริ่มต้น โดยทำการวิเคราะห์ขั้นตอนการระบุบล็อกพื้นฐาน และโครงสร้างข้อมูลสำหรับเพิ่มประสิทธิภาพต่อการวนรอบ Bytecodes มีแก่นเรื่องที่นำเสนอภายใน เรียก bytecodes ขยาย จะดำเนินการเพิ่มประสิทธิภาพการ
เพิ่มประสิทธิภาพการเริ่มต้น ด้วยวิธี inlining เรียกวิธีการว่างที่เกิดจากตัวสร้างวัตถุหรือวิธีเข้าเล็กมัก inlined การหลีกเลี่ยงรหัสขยาย (และ inefficiency แคผลลัพธ์) เรียกวิธีอื่น ๆ มี inlined เมื่ออยู่ในโปรแกรมฮอตสปอเช่นลูป เรียกเสมือนวิธีจัดการ โดยการเพิ่มการตรวจสอบชัดเจนเพื่อให้แน่ใจว่าวิธี inlined ยังคงถูกต้อง ถ้าการตรวจสอบล้มเหลว เมธอดเสมือนมาตรฐานจะดำเนินการ ถ้าเปลี่ยนวิธีอ้างอิงบ่อยครั้ง การตรวจเพิ่มเติมและรหัส inlined พื้นที่เพิ่มเติมค่าใช้จ่ายในการเรียก อย่างไรก็ตาม วิธีการอ้างอิงจะยังคงเหมือนเดิมในกรณีส่วนใหญ่ การตัดต้นทุนของการค้นหาวิธีการเสมือนและเรียก
inlining ต่อไปนี้ คอมไพเลอร์ IBM JIT ทำการตัดข้อยกเว้นทั่วไปตรวจสอบและกำจัดนิพจน์ย่อยทั่วไปตามรายละเอียดขั้นตอนของโปรแกรม จำนวนแถวที่ถูกผูกไว้ยกเว้นเช็คเพิ่มเติมเป็นรุ่น usingloop ลดลง วนรุ่นสร้างรุ่นสองวนเป้าหมาย — รุ่นปลอดภัย ด้วยการตรวจสอบข้อยกเว้นและรุ่นปลอดภัย โดยไม่มีข้อยกเว้นตรวจสอบ ขึ้นอยู่กับลูปดัชนีช่วงทดสอบที่จุดลูป เซฟหรือรุ่นไม่ปลอดภัยของลูปจะดำเนินการ
จุดนี้ คอมไพเลอร์ IBM JIT สร้างพื้นเมือง x 86 เครื่องรหัส bytecode ขยายตัว บางความหมายจัดการกองพบใน bytecode การ โดยลำดับ bytecode ตรงที่ทราบถึงการดำเนินงานเฉพาะกองการ การปันส่วนลงทะเบียนจะใช้ โดยการกำหนดทะเบียนกองตัวแปรแรกแล้ว ให้ตัวแปรท้องถิ่นตามการใช้งานนับ การปันส่วนลงทะเบียนและรหัสรุ่นจะดำเนินการในเดียวกันเพื่อลดเวลาการคอมไพล์ สุดท้าย กำหนดการภายในระดับพื้นฐานบล็อกรหัสดั้งเดิมที่สร้างขึ้นให้เหมาะสมกับความต้องการของเครื่องต้นแบบ
Intel มีคอมไพเลอร์ JIT กับแพคเกจเพิ่มประสิทธิภาพ VTune สำหรับ Java ที่ interfaces มี JVM Microsoft [Adl Tabatabai et al. 1998] คอมไพเลอร์ Intel JIT ทำ gen รหัส erates และเพิ่มประสิทธิภาพในรอบเดียวโดยไม่สร้างการแสดงภายในสมบูรณ์ของโปรแกรม วิธีนี้เร็วสร้างรหัสภาษาขณะที่จำกัดขอบเขตของการเพิ่มประสิทธิภาพเพื่อบล็อกการพื้นฐานเพิ่มเติมเท่านั้น คอมไพเลอร์ Intel JIT ใช้นิพจน์ย่อยทั่วไปตัดออก (CSE) ภายในบล็อกพื้นฐาน การปันส่วนลงทะเบียนเฉพาะที่ และสากล และเพิ่มประสิทธิภาพในการยกเว้นจำกัด.
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
3.2.2 . Just - in - Time หรือไม่เวลาคอมไพเลอร์
ที่ Just - in - Time หรือไม่(ด่านอีป้อง)คอมไพเลอร์แปลง bytecodes Java ในคำแนะนำเครื่องพื้นเมืองเทียบเท่ากับที่แสดงในรูปที่ 2 การแปลนี้จะมีการดำเนินการที่ใช้งานได้ทันทีหลังจากที่มีวิธีการดำเนินการ แทนที่จะเป็นการตีความรหัสไว้สำหรับวิธีการดำเนินการที่ด่านอีป้องคอมไพเลอร์ที่แปลง bytecodes ของวิธีการในลำดับที่ของคำแนะนำเครื่องพื้นเมืองคำแนะนำพื้นเมืองเหล่านี้จะถูกดำเนินการในสถานที่ของ bytecodes ได้ bytecodes แปลเป็น ภาษาต่างๆ ได้พบข้อมูลในแคชเพิ่มขึ้นในการที่จะขจัดการแปลข้อมูลสำรองของ bytecodes แล้ว.
ในกรณีส่วนใหญ่คอมไพเลอร์ด่านอีป้องการสร้างรหัสเดิมจะมี ประสิทธิภาพ มากกว่าการตีความ bytecodes เทียบเท่ากับที่นับตั้งแต่ผู้เป็นล่ามระบุและแปลความหมาย bytecode ทุกครั้งที่มีปัญหาเกิดขึ้นในระหว่างการประมวลผล รวบรวมด่านอีป้องอีกด้านหนึ่งที่ระบุและแปลงการเรียนการสอนแต่ละครั้งเดียวเท่านั้น - ครั้งแรกแล้วยังมีวิธีการที่จะดำเนินการ ในโปรแกรมต่างๆที่มีหูขนาดใหญ่หรือวิธีใดวิธีหนึ่งการสอบถามแบบสอบถามซ้ำการรวมกันของการประมวลผลครั้งรหัสพื้นเมืองและรวบรวมด่านอีป้องที่สามารถลดน้อยลงไปมากเมื่อเทียบกับผู้เป็นล่าม นอกจากนี้คอมไพเลอร์ด่านอีป้องที่สามารถเพิ่มความเร็วการประมวลผลรหัสพื้นเมืองโดยการปรับรหัสก็จะมีการสร้างตามที่ได้อธิบายไว้ในหัวข้อ 3.2.1 .
ตั้งแต่เวลาในการประมวลผลของโปรแกรม Java ที่เป็นการผสมผสานของเวลาในการประมวลผลและเวลาคอมไพล์คอมไพเลอร์ด่านอีป้องที่ความต้องการเพื่อสร้างความสมดุลเวลาที่ใช้การปรับแต่งที่สร้างรหัสกับเวลาที่บันทึกโดยการปรับแต่ง การปรับแต่งซอร์สโค้ดจะถูกจำกัดตามขอบเขตที่ของรวบรวมเพิ่มเติม นับตั้งแต่รวบรวมเกิดขึ้นในความต้องการสำหรับหนึ่งหรือวิธีการหนึ่งในช่วงเวลาหนึ่งเป็นเรื่องยากสำหรับคอมไพเลอร์ด่านอีป้องที่จะดำเนินการได้รับการปรับแต่ง nonlocal เนื่องจากมีข้อจำกัดด้านเวลาและขอบเขตของรวบรวมด่านอีป้องได้รับการปรับแต่งด่านอีป้องเป็นคนเรียบง่ายโดยทั่วไปแล้วที่คาดว่าจะให้ผลตอบแทน ประสิทธิภาพ ขนาดใหญ่เหมาะสมเมื่อเทียบกับเวลาการปรับแต่งได้.
แม้ว่าคอมไพเลอร์ด่านอีป้องเป็นการทั่วไปโดยมี ประสิทธิภาพ มากกว่าผู้เป็นล่ามยังคงมีความได้เปรียบในการใช้ไมโครโฟนสำหรับล่ามได้ข้อดีประการหนึ่งคือการที่ผู้เป็นล่ามได้ดีเหมาะสมสำหรับโปรแกรมการแก้ไขจุดบกพร่อง ประโยชน์อีกประการหนึ่งคือที่รวบรวมด่านอีป้องรวบรวมวิธีการทั้งหมดที่หนึ่งครั้งขณะที่การตีความเท่านั้นที่จะแปลงคำแนะนำที่จะดำเนินการ หากเพียงเปอร์เซ็นต์ขนาดเล็กของ bytecodes ในวิธีการที่จะดำเนินการและไม่เคยใช้วิธีการที่ถูกประหารชีวิตเป็นสิ่งที่แทบจะไม่เกิดขึ้นเวลาที่ใช้ไปในรวบรวมด่านอีป้องอาจไม่ได้จนกระทั่งบริษัทโดยการปรับลดลงในช่วงเวลา execution.compilers ด่านอีป้อง
ในปัจจุบันจัดให้บริการความหลากหลายของแพลตฟอร์มเป้าหมายและโดดเด่นไปด้วย คาร์เฟ่ต์ที่ Symantec jitis รวมอยู่ใน Java 2 แอพพลิเคชันระบบสำหรับ Windows 95 / NT และ Netscape Navigator [ Symantec ]. microsoftincludes ที่ด่านอีป้องด้วย Internet Explorer สำหรับ Windows 95 / NT และ Macintosh [ Just - in - Time หรือไม่รวบรวม]ไม่มีข้อมูลที่เผยแพร่ให้บริการเกี่ยวกับรายละเอียดในการนำไปใช้งานของคอมไพเลอร์ด่านอีป้องเหล่านี้.
IBM รวมถึงคอมไพเลอร์ด่านอีป้องการปรับแต่งใน IBM สำหรับนักพัฒนาชุดของ Windows [ ishizaki et al . 1999 suganuma et al . 2000 ] คอมไพเลอร์ด่านอีป้องนี้จะทำให้มีการปฏิบัติความหลากหลายของการปรับแต่งรวมถึง inlining วิธีการกำจัดตรวจสอบข้อยกเว้นการตัด subexpression ทั่วไปรายละิเอียดรุ่นของอุปกรณ์ต่อพ่วงการจัดตารางเวลาและรหัส. คอมไพเลอร์ที่จะเริ่มต้นขึ้นโดยการวิเคราะห์การไหลของการดำเนินการในการระบุข้อมูลโครงสร้างการต่อพ่วงและอยู่ห่างจากพื้นฐานสำหรับการปรับแต่งใน ภายหลัง bytecodes ที่ได้รับการปรับเปลี่ยนรูปแบบเพื่อให้เข้าไปในการเป็นตัวแทน ภายใน ที่เรียกว่า bytecodes ระยะยาวที่ได้รับการปรับแต่งได้ดำเนินการ.
ได้รับการปรับแต่งจะเริ่มต้นด้วยวิธีการ inliningการโทรออกจากการเริ่มต้นจากวิธีรับวัตถุหรือวิธีการเข้าระบบขนาดเล็กมี inlined เสมอ เพื่อหลีกเลี่ยงการขยายรหัส(และดังนั้นจึงไม่ส่งผลให้แคช)สายวิธีอื่นๆคือ inlined เท่านั้นหากพวกเขาอยู่ในฮอตสปอตโปรแกรมเช่นลูป การโทรแบบเสมือนจริงมีวิธีการจัดการโดยการเพิ่มการตรวจสอบอย่างชัดเจนที่จะทำให้แน่ใจว่าวิธีการ inlined ที่ยังคงใช้งานได้อยู่ ถ้าการตรวจสอบที่ล้มเหลวเรียกใช้งานวิธีการเสมือนมาตรฐานจะมีการดำเนินการ หากวิธีที่อ้างถึงการเปลี่ยนแปลงอยู่บ่อยครั้งรหัสพื้นที่ inlined และตรวจสอบเพิ่มเติมจะเพิ่มค่าใช้จ่ายเพิ่มเติมเพื่อเรียกใช้งานได้ แต่ถึงอย่างไรก็ตามวิธีการที่อ้างถึงคือมีแนวโน้มที่จะยังคงเป็นแบบเดิมในบางกรณีการลดค่าใช้จ่ายที่มากที่สุดของโอมและการค้นหาวิธีการเสมือน.
inlining ต่อไปนี้:IBM ด่านอีป้องคอมไพเลอร์ที่จะทำการตัดการตรวจสอบความผิดปกติทั่วไปและการกำจัด subexpression ทั่วไปตามข้อมูลการไหลของโปรแกรม จำนวนของเช็คยกเว้นความผูกพันจะลดลงรายละิเอียดรุ่นของ usingloop เพิ่มเติม เวอร์ชั่นของการต่อพ่วงทำให้ทั้งสองรุ่นของกลุ่มเป้าหมายแบบต่อพ่วงรุ่นที่มีความ ปลอดภัย และข้อยกเว้นในการตรวจสอบและรุ่นไม่ ปลอดภัย โดยไม่มีข้อยกเว้นการตรวจสอบทั้งนี้ขึ้นอยู่กับการทดสอบช่วงดัชนีการต่อพ่วงที่จุดเข้าของการต่อพ่วงที่ทั้งตู้นิร ภัย หรือรุ่นที่ไม่ ปลอดภัย ในการต่อพ่วงจะถูกประหารชีวิต
อยู่ที่จุดนี้ IBM ด่านอีป้องคอมไพเลอร์ที่จะสร้างรหัส x 86 เครื่องพื้นเมืองซึ่งใช้ในการเป็นตัวแทน bytecode ขยาย การจัดการสแต็ค( stack )ความเปลี่ยนแปลงในความหมายของคำว่ามีการตรวจพบใน bytecode โดยตรงกับลำดับ bytecode ที่รู้จักกันดีในการเป็นตัวแทนการทำงานชุดเฉพาะการจัดสรรลงทะเบียนจะถูกนำมาใช้โดยการกำหนดรีจิสเตอร์ให้ตัวแปรเป็นอันดับแรกและจากนั้นจึงไปยังเป็นตัวแปรสำคัญในท้องถิ่นโดยขึ้นอยู่กับการใช้งานนับถอยหลัง รุ่นใหม่รหัสและการจัดสรรลงทะเบียนได้ในบัตรผ่านแบบเดียวกันเพื่อลดเวลาคอมไพล์ สุดท้ายคือรหัสแบบเนทีฟสร้างขึ้นที่มีการกำหนดตารางเวลาในระดับเป็นอาคารก่ออิฐแบบเรียบง่ายที่ให้เหมาะกับความต้องการของเครื่องที่รองอยู่.
Intel รวมถึงคอมไพเลอร์ด่านอีป้องพร้อมด้วยแพ็คเกจ,การปรับแต่งสำหรับ Java ที่อินเตอร์เฟซกับ Microsoft ของ Sun JVM แล้ว Control Panel [คอมมานด์ไลน์ tabatabai et al . 1998 ] ด่านอีป้องคอมไพเลอร์ Intel จะทำการปรับแต่งและ Gen ,รหัส erates ในบัตรผ่านตัวเดียวโดยไม่สร้างการเป็นตัวแทนให้เสร็จสมบูรณ์ ภายใน ของโปรแกรมความเร็วในการส่งข้อมูลสูงสุดซึ่งวิธีการนี้รุ่นรหัสเดิมในขณะที่การจำกัดขอบเขตของการปรับแต่งที่เพิ่มขึ้นในช่วงตึกพื้นฐานเท่านั้น ด่านอีป้องคอมไพเลอร์ Intel จะใช้การกำจัด subexpression ทั่วไป( cse )อยู่ ภายใน ระยะทางไม่กี่ช่วงตึกพื้นฐานการจัดสรรในท้องถิ่นและระดับโลกลงทะเบียนและจำกัด(มหาชน)ยกเว้นได้รับการปรับแต่ง.
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2024 I Love Translation. All reserved.

E-mail: