Ahead-of-time compileSome platforms do not allow runtime code generati การแปล - Ahead-of-time compileSome platforms do not allow runtime code generati ไทย วิธีการพูด

Ahead-of-time compileSome platforms

Ahead-of-time compile

Some platforms do not allow runtime code generation. Therefore, any managed code which depends upon just-in-time (JIT) compilation on the target device will fail. Instead, we need to compile all of the managed code ahead-of-time (AOT). Often, this distinction doesn’t matter, but in a few specific cases, AOT platforms require additional consideration.

System.Reflection.Emit

An AOT platform cannot implement any of the methods in the System.Reflection.Emit namespace. Note that the rest of System.Reflection is acceptable, as long as the compiler can infer that the code used via reflection needs to exist at runtime.

Serialization

AOT platforms may encounter issues with serialization and deserlization due to the use of reflection. If a type or method is only used via reflection as part of serialization or deserialization, the AOT compiler cannot detect that code needs to be generated for the type or method.

Generic virtual methods

Generic methods require the compiler to do some additional work to expand the code written by the developer to the code actually executed on the device. For example, we need different code for List with an int or a double. In the presence of virtual methods, where behavior is determined at runtime rather than compile time, the compiler can easily require runtime code generation in places where it is not entirely obvious from the source code.

Suppose we have the following code, which works exactly as expected on a JIT platform (it prints “Message value: Zero” to the console once):
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
ล่วงหน้าของเวลาคอมไพล์บางแพลตฟอร์มการไม่อนุญาตให้สร้างรหัสที่รันไทม์ ดังนั้น การจัดการรหัสซึ่งขึ้นอยู่กับการรวบรวมเพียง--เวลา (JIT) บนอุปกรณ์เป้าหมาย จะล้มเหลว แทน เราจำเป็นต้องคอมไพล์ทั้งหมดของการจัดการล่วงหน้า--เวลา (AOT) มักจะ ไม่ได้เรื่องนี้ แต่ในบางกรณีเฉพาะ แพลตฟอร์ม AOT ต้องพิจารณาเพิ่มเติมSystem.Reflection.Emitมีแพลตฟอร์ม AOT ไม่สามารถใช้วิธีการใน System.Reflection.Emit namespace หมายเหตุว่า ส่วนที่เหลือของ System.Reflection จะยอมรับ เช่นคอมไพเลอร์สามารถ infer ว่า รหัสที่ใช้ผ่านการสะท้อนต้องมีอยู่ในขณะทำงานอนุกรมแพลตฟอร์ม AOT อาจพบปัญหาเกี่ยวกับอนุกรมและ deserlization เนื่องจากการใช้การสะท้อน ถ้าชนิดหรือวิธีใช้ผ่านสะท้อนเป็นส่วนหนึ่งของอนุกรมหรือการดีซีเรียลไลซ์ AOT คอมไพเลอร์ไม่สามารถตรวจพบว่า รหัสต้องถูกสร้างขึ้นสำหรับชนิดหรือวิธีทั่วไปวิธีการเสมือนวิธีการทั่วไปต้องการคอมไพเลอร์จะทำงานบางอย่างเพิ่มเติมเพื่อขยายรหัสที่เขียนขึ้น โดยนักพัฒนารหัสปฏิบัติการจริง บนอุปกรณ์ เช่นนี้ เราต้องรหัสแตกต่างกันสำหรับรายการ int หรือ double ในวิธีการเสมือน ที่ทำงานจะถูกกำหนดในขณะรันไทม์แทนที่คอมไพล์ คอมไพเลอร์สามารถได้ต้องสร้างรหัสรันไทม์ในสถานที่มันไม่ชัดเจนทั้งหมดรหัสแหล่งที่มาสมมติว่าเรามีรหัสต่อไปนี้ ที่ทำงานตรงตามที่คาดไว้บนระบบ JIT (พิมพ์ "ค่าของข้อความ: ศูนย์" คอนโซลครั้ง):
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
ข้างหน้าของเวลารวบรวมบางแพลตฟอร์มไม่อนุญาตให้มีการสร้างรหัส Runtime ดังนั้นการจัดการรหัสใด ๆ ซึ่งขึ้นอยู่กับ just-in-Time (JIT) รวบรวมบนอุปกรณ์เป้าหมายจะล้มเหลว แต่เราต้องรวบรวมทั้งหมดของการจัดการรหัสข้างหน้าของเวลา (มหาชน) บ่อยครั้งที่ความแตกต่างนี้ไม่สำคัญ แต่ในกรณีเฉพาะบางแพลตฟอร์มทอทต้องมีการพิจารณาเพิ่มเติม. System.Reflection.Emit แพลตฟอร์มทอทไม่สามารถดำเนินการใด ๆ ของวิธีการใน namespace System.Reflection.Emit โปรดทราบว่าส่วนที่เหลือของ System.Reflection เป็นที่ยอมรับตราบเท่าที่คอมไพเลอร์สามารถอนุมานได้ว่ารหัสผ่านที่ใช้ในการสะท้อนความต้องการที่จะอยู่ที่รันไทม์. อันดับแพลตฟอร์มทอทอาจพบปัญหาเกี่ยวกับการเป็นอันดับและ deserlization เนื่องจากการใช้การสะท้อน ถ้าพิมพ์หรือวิธีการที่ใช้เฉพาะผ่านการสะท้อนเป็นส่วนหนึ่งของการเป็นอันดับหรือ deserialization คอมไพเลอร์ทอทไม่สามารถตรวจสอบรหัสที่จะต้องมีการสร้างขึ้นสำหรับประเภทหรือวิธีการ. วิธีเสมือนทั่วไปวิธีการทั่วไปต้องใช้คอมไพเลอร์ที่จะทำบางทำงานเพิ่มเติมเพื่อขยาย โค้ดที่เขียนโดยนักพัฒนารหัสที่ดำเนินการจริงบนอุปกรณ์ ตัวอย่างเช่นเราต้องมีรหัสที่แตกต่างกันสำหรับรายชื่อที่มี int หรือสองครั้ง ในการปรากฏตัวของวิธีการเสมือนที่พฤติกรรมที่มีความมุ่งมั่นที่รันไทม์มากกว่ารวบรวมเวลาคอมไพเลอร์ได้อย่างง่ายดายสามารถกำหนดรหัสรุ่น Runtime ในสถานที่ที่มันไม่ได้เป็นที่เห็นได้ชัดอย่างสิ้นเชิงจากรหัสที่มา. สมมติว่าเรามีรหัสต่อไปนี้ซึ่งทำงานตรงตามที่ คาดว่าบนแพลตฟอร์ม JIT (มันพิมพ์ "ค่าข้อความ: ศูนย์" ไปยังคอนโซลครั้งเดียว):















การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
ข้างหน้าของเวลารวบรวมบางแพลตฟอร์มไม่อนุญาตให้รันไทม์รหัสรุ่น ดังนั้นจึงมีการจัดการรหัสซึ่งขึ้นอยู่กับทันเวลาพอดี ( JIT ) รวบรวมบนอุปกรณ์เป้าหมายจะล้มเหลว แต่เราต้องรวบรวมทั้งหมดของการจัดการรหัสก่อนเวลา ( มหาชน ) มักจะ , นี้ความแตกต่างไม่สำคัญ แต่ในเฉพาะกรณีที่ไม่กี่ , AOT แพลตฟอร์มต้องพิจารณาเพิ่มเติมsystem.reflection.emitซึ่งเป็นแพลตฟอร์มไม่สามารถใช้ใด ๆของวิธีการใน system.reflection.emit namespace . ทราบว่าส่วนที่เหลือของระบบ แสงสะท้อนจะยอมรับได้ ตราบเท่าที่คอมไพเลอร์สามารถอนุมานได้ว่า รหัสที่ใช้ผ่านการสะท้อนความต้องการที่จะอยู่ที่รันไทม์การทำให้เป็นอนุกรมมหาชน ) อาจพบปัญหากับการทำให้เป็นอนุกรม และ deserlization เนื่องจากการใช้งานของการสะท้อน ถ้าเป็นแบบหรือวิธีการจะใช้ผ่านทางเงาสะท้อนเป็นส่วนหนึ่งของการทำให้เป็นอนุกรมหรือ deserialization , มหาชนคอมไพเลอร์ไม่สามารถตรวจสอบว่ารหัสต้องสร้างรูปแบบหรือวิธีวิธีที่เสมือนทั่วไปวิธีการทั่วไปที่ต้องใช้คอมไพเลอร์จะทำงานบางอย่างเพิ่มเติมเพื่อขยายโค้ดที่เขียนโดยนักพัฒนาที่จะรหัสที่จริงรันบนอุปกรณ์ ตัวอย่างเช่นเราต้องการรหัสที่แตกต่างกันสำหรับรายการที่ 1 หรือ 2 คู่ ในการแสดงตนของวิธีการเสมือนที่พฤติกรรมถูกกำหนดไทม์มากกว่าคอมไพล์ ผู้แปลสามารถใช้รหัสรุ่นใหม่ในสถานที่ที่ไม่ได้ทั้งหมดชัดเจนจากรหัสแหล่งที่มาถ้าเราได้รหัสต่อไปนี้ซึ่งทำงานตามที่คาดไว้ในจิต แพลตฟอร์ม ( มันพิมพ์ " ค่า : ข้อความศูนย์ " คอนโซลครั้ง )
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2024 I Love Translation. All reserved.

E-mail: