Mozilla เจอปัญหา Firefox คอมไพล์ไม่ผ่านเพราะซอร์สโค้ดใหญ่เกินหน่วยความจำ

by mk
13 December 2011 - 11:18

ข่าวขำๆ ที่คนโดนคงขำไม่ออก และเป็นประเด็นทางเทคนิคการพัฒนาโปรแกรมที่น่าสนใจครับ

เรื่องมีอยู่ว่าทีมพัฒนา Firefox ประสบปัญหา "โปรแกรมคอมไพล์ไม่ผ่าน" เพราะตัวซอร์สโค้ดมีขนาดใหญ่เกินไป จนหน่วยความจำบนเครื่องที่ใช้คอมไพล์ซึ่งเป็นเครื่องแบบ 32 บิตมีไม่พอ

ขั้นตอนการคอมไพล์ Firefox มาให้พวกเราๆ ใช้ดาวน์โหลดกัน สำหรับเวอร์ชันวินโดวส์จะทำบนเครื่องที่ใช้ระบบปฏิบัติการวินโดวส์แบบ 32 บิต ด้วย Microsoft Visual C++ 2005 ซึ่งใช้มานานแล้ว ส่วนเทคนิคการปรับแต่งประสิทธิภาพจะใช้เทคนิคที่เรียกว่า Profile-Guided Optimisation (PGO) ที่ช่วยรีดประสิทธิภาพได้ประมาณ 10% แต่ก็เปลืองหน่วยความจำระหว่างคอมไพล์มาก

ปัญหาคือซอร์สโค้ดของ Firefox (ไม่ใช่ตัวไฟล์ไบนารี) มีขนาดใหญ่มากขึ้นเรื่อยๆ จนหน่วยความจำที่ต้องใช้ขณะคอมไพล์มีเยอะเกินหน่วยความจำที่อ้างอิงได้แบบ 32 บิตเสียแล้ว ผลคือ Mozilla ต้องหยุดคอมไพล์ Firefox รุ่นที่กำลังพัฒนาชั่วคราว

วิศวกรของ Mozilla เสนอทางแก้ 3 แนวทาง

  1. ลดขนาดของโค้ดลง โดยอาจตัดโค้ดบางส่วน (เช่น libxul) ออกเป็นไลบรารีแยกต่างหาก
  2. ย้ายไปใช้ Visual C++ 2010 ที่อาจจะมีประสิทธิภาพดีกว่า Visual C++ 2005
  3. เปลี่ยนไปคอมไพล์บนเครื่องแบบ 64 บิตที่อ้างอิงหน่วยความจำได้เยอะกว่า (แต่ยังคอมไพล์แบบ 32 บิต)

แนวทางที่เป็นไปได้คงเป็นการผสมกันระหว่างข้อ (1) และ (3) ครับ

ที่มา - mozilla.dev.platform, Softpedia

Blognone Jobs Premium