ด้วยการสนับสนุน Luau สำหรับการเก็บรวบรุมข้อมูลด้วยรหัสเค้าโครงของเครื่องเข้าสู่คำสั่งของเครื่องโดยตรงโดยไม่ต้องใช้บาทเบาจาก Luau VM ที่ดำเนินการบน หน่วยควา
เปิดใช้งานในระดับที่สูงขึ้น
เพื่อเปิดใช้งานการเก็บรหัสเดิมสำหรับ Script ให้เพิ่ม --!native เพิ่มความคิดเห็นที่ด้านบน:¹
--!เนทีฟprint("Hello from native code!")
นี่ช่วยให้การเก็บรหัสเดิมสำหรับทุกฟังก์ชันในสคริปต์และมุมมองระดับสูงสุดหากเป็นไปได้ ไม่จำเป็นต้องทำการเปลี่ยนแปลงใด ๆ เพิ่มเติม; การทำงานของสคริปต์ที่เรียกตัวเอง
นอกจากนี้คุณยังสามารถเปิดใช้งานการเก็บรหัสด้วยค่านิยม @native เพื่อให้สามารถใช้งานได้สำหรับฟังก์ชันเดียวโดยการเพิ่มค่านิยม สำหรับรหัสที่เก็บไว้ ในแนวคิด Thai:นอกจากนี้คุณยังสามารถเปิดใช้งานการเก็บรห
@native
local function f(x)
return (x + 1)
end
ดีที่สุด การฝึกอบรม
เคล็ดลับต่อไปนี้จะช่วยให้คุณได้รับประโยชน์สูงสุดจากการเก็บรวบรวมโค้ดเริ่มต้น:
ดีกว่าจะเปิดใช้งานคุณสมบัตินี้ในสคริปที่ประมวลผลจำนวนมากโดยตรงใน Luau หากคุณมีจำนวนมากของการดำเนินการทางคณิตศาสตร์บนตารางและเป็นตัวอย่าง buffer มาก
มันเป็นสิ่งสำคัญที่คุณวัดเวลาที่ใช้เวลาของสคริปหรือฟังก์ชันด้วยการแปลงแบบดั้งเดิมเพื่อพิจารณาเมื่อใดที่ดีที่สุดที่จะใช้มัน เครื่องมือ เครื่องมือการวิเคราะห์สคริปต์ สามา
อาจเป็นเรื่องยั่งยืนที่จะวางความคิดเห็น --!native ใน ทุก สคริปต์เพียงเพื่อให้แน่ใจว่าบางส่วนจะดำเนินการเร็วขึ้น แต่การเก็บรหัสเดิมมีข้อบกพร่องบางอย่าง:
- เวลาการเคลื่อนย้ายรหัสจะต้องเพิ่มเวลาเริ่มต้นของเซิร์ฟเวอร์
- หน่วยความจำเพิ่มเติมจะถูกเก็บไว้เพื่อเก็บรหัสที่เรียกใช้แบบขั้นสูง
- มีขีดจำกัดสำหรับจำนวนเงินที่อนุญาตให้ใช้งานในประสบการณ์
ปัญหาเหล่านี้สามารถแก้ไขได้โดยการใช้คุณสมบัติที่เหมาะสมของคุณสมบัติ @native
รหัสที่จะหลีกเลี่ยง
ขณะที่คุณสมบัติทั้งหมดจะปฏิสัมพันธ์กันเหมือนกันกับหรือโดยไม่มีการเปิดใช้งานโค้ดเจ้าของ, บางคุณสมบัติจะไม่รุ่นตามธรรมชาติและอาจทำให้เกิดการปฏิสัมพันธ์ที่ไม่เหมาะสมหรือการแก้ไขคืน
- การใช้งานของต่างๆ Luau ฟังก์ชันสร้างขึ้นในที่เรียบร้อยด้วยอาร์กุณะที่ไม่ใช่ตัวเลขด้วย Use of various Luau built-in functions like math.asin() with non-numeric arguments.
- การส่งพารามิเตอร์ที่ไม่ถูกต้องมาเป็นฟังก์ชันที่ถูกต้อง เช่น การเรียก foo(true) เมื่อ foo ได้รับการประกาศเป็น function foo(arg: string) นั่นคือการใช้ 1> type annotations1> ที่ถ
เมื่อใช้ โปรไฟล์สคริปต์ คุณสามารถเปรียบเทียบเวลาที่ใช้ในการดำเนินงานของรุ่นปกติของฟังก์ชันกับรุ่นที่เรียบร้อยแล้ว หากฟังก์ช
ใช้ Type Annotations
การสร้างโค้ดเริ่มต้นพยายามที่จะให้เป็นประเภทที่เป็นไปได้สูงสุดสำหรับตัวแปรที่
พิมพ์ๆ โดยไม่จำเป็นต้องทำการตรวจสอบที่จำเป็น ซึ่งทำให้เกิดการประมวลผลโค้ดช้า
เพื่อแก้ปัญหาบางอย่าง, Luau ตรวจสอบการอธิบายการทำงานในตัวอนุกรม, แต่มันเป็นเรื่องแนะนำอย่างมากที่จะอธิบาย Vector3 อาร์กุณหมาละ:
--!เนทีฟ
-- “v” ถือเป็นตาราง; ฟังก์ชันทำงานช้าลงเนื่องจากการตรวจสอบตาราง
local function sumComponentsSlow(v)
return v.X + v.Y + v.Z
end
-- “v” ได้รับการประกาศเป็น Vector3 โค้ดสำหรับเวกเตอร์จะถูกสร้างขึ้น
local function sumComponentsFast(v: Vector3)
return v.X + v.Y + v.Z
end
Studio เครื่องมือ
ต่อไปนี้เครื่องมือใน Studio สนับสนุนสำหรับ --!native เครื่องมือและฟังก์ชัน #number สคริปต์และฟังก์ชัน Thai:ต่อไปนี้เครื่องมือใน Studio สนับสนุนสำหรับ --!native เครื่องมือและฟังก์ชัน #number สค
การดีบั๊ก
การดีบั๊กสคริปต์ ทั่วไป ของสคริปต์ได้รับการสนับสนุน แต่มุมมองสำหรับผู้ใช้น้องๆ/upvalues อาจไม่สมบูรณ์และขาดตัวแปรจาก คอลล์สแต็ค ที่ดำเนินการโดยตรง
โปรดทราบว่าเมื่อดีบั๊กโค้ดที่เลือกสำหรับการแปลงแบบต้นฉบับโดยการวาง จุดหยุด จะปิดการดีบั๊กสำหรับฟังก์ชันเหล่านั้น
โปรไฟลเลอร์สคริปต์
ใน โปรไฟล์สคริปต์ ฟังก์ชันที่เป็นตัวแทนจะแสดงผล <native> รวมกับพวกเขา:
หากคุณสมบัติที่มีเครื่องหมาย @native หรือภายในสคริปต์ --!nat
กองหิน Luau
ใน Luau Heap โปรไฟล์เนอร์หน่วยความจำที่ได้รับโดยฟังก์ชันเริ่มต้นจะปรากฏเป็น [native] องค์ประกอบในกราฟิก
วิเคราะห์ขนาด
ทุกสคริปต์ที่เรียบร้อยอย่างแน่นอนใช้หน่วยความจำ เมื่อขนาดของโค้ดที่เรียบร้อยถึงขีดจำกัดที่กำหนดไว้แล้ว การแปลงรุ่นจะหยุดและเรียบร้อย และคอดที่เหลือจะประมวลผลโดยไม่เปิดเผย
เพื่อตรวจสอบขนาดของโค้ดเรื่มต้นของสคริปต์และฟังก์ชันต่างๆ
- ให้แน่ใจว่าคุณอยู่ใน เซิร์ฟเวอร์ ดูผ่านปุ่ม เปิด/ปิดผ่านลูกศร / ปุ่มลูกศรของลูกศร
- เรียก debug.dumpcodesize() จาก บาร์คําสั่ง
ใน หน้าต่างการออก คุณจะเห็นจำนวนเงินสคริปต์และการใช้งานทั้งหมดที่ถูกเรียกใช้จนถึงจุดเรียกใช้ ขนาดหน่วยความจำที่กล่าวถึงในรหัสเดิมของพวกเขา และขีดจำ
สำหรับแต่ละสคริปต์ออกมาแสดงจำนวนฟังก์ชันที่ได้รับการคอมปิลและความจำหน่ายเมมโมริตอร์ของคอมพิลเนเตอร์ สำหรับแต่ละฟังก์ชัน
ข้อจํากัดและการแก้ปัญหา
การเรียนรู้วิธีการเขียนโค้ดให้เป็นคำสั่งสำหรับประเภทของ CPU ต้องใช้หน่วยความจำเพิ่มเติม นอกจากนี้การปรับปรุงสำหรับคุณสมบัติที่ซับซ้อนอาจใช้เวลานานเกินไปในการดำเนินการ การกดคุณสมบั
ฟังก์ชัน 'f' ในตำแหน่งที่ 20 เกินขีดจำกัดการใช้งานโค้ดเดียว
ข้อผิดพลาดนี้หมายถึงว่าบล็อกโค้ดเดียวภายในฟังก์ชันใช้คำสั่งมากกว่า 64K คำสั่ง สิ่งนี้สามารถหลีกเลี่ยงได้โดยการเรียบเรียงฟังก์ชันหรือแบ่งออกเป็นบล็อกโค้ดขนาดเล็ก
ฟังก์ชัน 'f' ในตำแหน่งที่ 20 เกินขีดจำกัดโค้ดฟังก์ชัน
รหัส32K บล็อกภายในของโค้ด บล็อกภายในของโค้ดไม่สมบูรณ์แบบตรงไปยังบล็อกการไหลของคุณสมบัติ แต่ข้อผิดพลาดนี้สามารถหลีกเลี่ยงได้โดย
ฟังก์ชัน 'f' ในตารางอันที่ 200 เกินขีดจำกัดการใช้งานโมดูลทั้งหมด
ข้อผิดพลาดนี้หมายถึงว่าในทั้งหมดว่าฟังก์ชันได้ถึงขีดจำกัดของ 1 ล้านคำสั่งสำหรับทั้งหนังส
*ฟังก์ชัน 'f' ในตำแหน่งที่ 20 พบข้อผิดพลาดการลดลงภายในเกิดขึ้น *(หรือ) ความผิดพลาดภายใน: การเรียกร้องรหัสสมุดใหม่ (การเรียกร้องรหัสสมุด) ไม่สำเร็จ
ในบางครั้งฟังก์ชันอาจมีข้อมูลที่ซับซ้อนของโค้ดที่เครื่องคอมพิวเตอร์เดิมของคุณไม่สามารถจัดการได้ เพื่อหลีกเลี่ยงข้อผิดพลาดนี้ให้ตรวจสอบข้อมูลที่ซับซ้อนในโค้ดและแบ่งออกหรือเรียบ
เข้าถึงขีดจำกัดการจัดเก็บหน่วยความจำสำหรับการเรียกใช้โค้ดเริ่มต้น
ข้อผิดพลาดนี้หมายถึงว่าขีดจำกัดหน่วยความจำสำหรับข้อมูลโค้ดเรื่มต้นได้ถึงขีดจำกัดแล้ว เพื่อหลีกเลี่ยงสิ่งนี้ ลองลบ --!translate จากสคริปที่มีการใช้ห