Mojo Academy · บทเรียน

เหตุใดการคำนวณขณะคอมไพล์จึงเพิ่มความเร็ว

ดูว่าการทำให้เฉพาะเจาะจงช่วยลดต้นทุนขณะทำงานอย่างไร

บทเรียน 4 จาก 413 ขั้นตอน

เหตุใดการคำนวณขณะคอมไพล์จึงเพิ่มความเร็ว เป็นบทเรียน Mojo Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Mojo Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน

ทำงานล่วงหน้า เสียค่าใช้จ่ายน้อยลงภายหลัง

งานใดก็ตามที่คอมไพเลอร์ทำเสร็จล่วงหน้า คือ งานที่โปรแกรมของคุณไม่ต้องทำซ้ำขณะทำงาน นี่คือหัวใจของความเร็วขณะคอมไพล์ ⚡

การสร้างเฉพาะทางตัดตัวเลือกออก

เมื่อค่าใดเป็นพารามิเตอร์ คอมไพเลอร์จะฝังค่านั้นไว้ในโค้ดและลบแขนงเงื่อนไขที่ต้องใช้ตัดสินค่าขณะทำงานออก

การคำนวณค่าคงที่ล่วงหน้า

พารามิเตอร์ที่ทราบค่าล่วงหน้าทำให้ Mojo ทำการคำนวณค่าคงที่ล่วงหน้าได้ โดยคำนวณผลลัพธ์ตายตัวระหว่างคอมไพล์แทนการคำนวณซ้ำทุกครั้งที่เรียกใช้

fn area[w: Int, h: Int]() -> Int:
    return w * h

คลายลูปได้

หากจำนวนรอบของลูปเป็นพารามิเตอร์ คอมไพเลอร์สามารถคลายลูปให้เป็นโค้ดที่เรียงต่อกันโดยตรง เพื่อลดต้นทุนการนับและการกระโดด

ไม่มีการเรียกใช้แบบไดนามิก

เนื่องจากชนิดข้อมูลที่แน่นอนถูกกำหนดไว้ขณะคอมไพล์ การเรียกใช้จึงไปยังโค้ดที่ถูกต้องโดยตรง โดยไม่มีการค้นหาขณะทำงานมาทำให้ช้าลง

โค้ดเล็กลง กระชับขึ้น

ฟังก์ชันเฉพาะทางมีเฉพาะตรรกะที่จำเป็นจริง ๆ ทำให้โค้ดเครื่องมีขนาดเล็กลง เรียบง่ายขึ้น และเหมาะกับ CPU มากขึ้น

ความกว้างของ SIMD ในฐานะพารามิเตอร์

การกำหนดความกว้างของ SIMD ขณะคอมไพล์ทำให้ Mojo สร้างคำสั่งเวกเตอร์ที่ตรงตามต้องการ โดยไม่ต้องมีแขนงเงื่อนไขขณะทำงานเพื่อตรวจจำนวนเลน

var v = SIMD[DType.float32, 8](0)

สิ่งที่ต้องแลก

คุณแลกเวลาคอมไพล์และขนาดโค้ดที่เพิ่มขึ้นเล็กน้อยกับประสิทธิภาพขณะทำงานที่เพิ่มขึ้นมาก ซึ่งคุ้มค่าอย่างยิ่งในโค้ดที่เน้นประสิทธิภาพ

จุดที่เห็นผลมากที่สุด

การสร้างเฉพาะทางโดดเด่นในเส้นทางการทำงานที่ใช้บ่อย เช่น ลูปตัวเลขที่กระชับและเคอร์เนลที่ทำงานหลายล้านครั้งในโค้ดปัญญาประดิษฐ์และวิทยาศาสตร์

ยังคงอ่านเข้าใจง่าย

คุณยังคงมีนิยามทั่วไปเดียวที่ชัดเจน ขณะที่คอมไพเลอร์สร้างรูปแบบรวดเร็วหลายแบบ ดังนั้นความเร็วจึงไม่ทำให้ความอ่านง่ายลดลง

แนวคิดสำคัญ

ย้ายการตัดสินใจจากขณะทำงานไปยังเวลาคอมไพล์ แล้วต้นทุนก็หายไป แนวคิดเดียวนี้เองที่ทำให้ Mojo มีประสิทธิภาพทัดเทียมภาษาระดับต่ำได้

ตรวจสอบอย่างรวดเร็ว

ทบทวนว่าเหตุใดพารามิเตอร์ขณะคอมไพล์จึงช่วยเพิ่มประสิทธิภาพ

สรุปทบทวน

คุณได้เห็นประโยชน์แล้วว่า พารามิเตอร์ขณะคอมไพล์ทำให้ Mojo คำนวณค่าคงที่ล่วงหน้า คลายลูป และข้ามการเลือกโค้ด เปลี่ยนโค้ดทั่วไปให้เป็นโค้ดเครื่องที่รวดเร็วและปรับเฉพาะทาง 🎯

เริ่มต้นได้ฟรี

เรียนรู้ Mojo ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “เหตุใดการคำนวณขณะคอมไพล์จึงเพิ่มความเร็ว” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “เหตุใดการคำนวณขณะคอมไพล์จึงเพิ่มความเร็ว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Mojo Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Mojo Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “เหตุใดการคำนวณขณะคอมไพล์จึงเพิ่มความเร็ว”

ดูว่าการทำให้เฉพาะเจาะจงช่วยลดต้นทุนขณะทำงานอย่างไร คุณปฏิบัติ Mojo Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Mojo Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Mojo Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “เหตุใดการคำนวณขณะคอมไพล์จึงเพิ่มความเร็ว” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Mojo Academy นี้ได้ไหม

ได้ บทเรียน Mojo Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. พารามิเตอร์เทียบกับอาร์กิวเมนต์
  2. ฟังก์ชันที่รับพารามิเตอร์
  3. Struct ที่รับพารามิเตอร์
  4. เหตุใดการคำนวณขณะคอมไพล์จึงเพิ่มความเร็ว
← กลับไปที่ Mojo Academy