Tags:
Node Thumbnail

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

เรื่องมีอยู่ว่าทีมพัฒนา 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

Get latest news from Blognone

Comments

By: lingjaidee
ContributoriPhoneAndroid
on 13 December 2011 - 19:43 #363735
lingjaidee's picture

ขำดีไหมเนี่ย ปัญหาขององค์กรระดับนี้ -_-'


my blog

By: tg-thaigamer
ContributoriPhoneAndroidBlackberry
on 13 December 2011 - 19:50 #363738
tg-thaigamer's picture

มันเป็นสิ้งที่ไม่ควรเกิดใช่ไหมอ่ะครับ


มือใหม่!! ใหม่จริงๆนะ

By: darkleonic
ContributorAndroidWindowsIn Love
on 13 December 2011 - 19:56 #363743
darkleonic's picture

ทำ 3 อย่างพร้อมกันครับ

แต่ให้เลือก ผมว่าเลือกอัน 3 ตรงประเด็นสุด


I need healing.

By: put4558350
ContributorAndroidUbuntuWindows
on 13 December 2011 - 23:05 #363804 Reply to:363743
put4558350's picture

ซ้ำ


samsung ใหญ่แค่ใหน ?
https://youtu.be/6Afpey7Eldo

By: put4558350
ContributorAndroidUbuntuWindows
on 13 December 2011 - 22:54 #363810 Reply to:363743
put4558350's picture

1 กับ 2 ทำแล้วโปรแกรมเร็วขึ้นนะครับ

1 จะเร็วขึ้นมาก แต่งานช้าง

2 จะเร็วขึ้นนิดหน่อย งานก็น้อยตาม

3 เหมือนแก้ปัญหาชั่วคราวแต่ก็ง่ายและเร็วที่สุด


samsung ใหญ่แค่ใหน ?
https://youtu.be/6Afpey7Eldo

By: Manta
AndroidWindows
on 13 December 2011 - 19:56 #363744
Manta's picture

ผมคิดว่ามันก็เป็นปัญหาทางเทคนิคที่เกิดขึ้นได้ ไม่ใช่เรื่องบังเอิญหรือแปลกแต่อย่างใด

วิธีทางแก้ด้วยวิธีที่ 3 น่าจะเป็นการแก้ที่สาเหตุมากที่สุดครับ

By: atheist
AndroidUbuntuWindows
on 13 December 2011 - 20:00 #363746

ปัญหาแปลกๆ มันก็เกิดกับทุกองค์กร ต่างกันที่ว่าจะเปิดเผยหรือไม่

By: azx
iPhoneWindows
on 13 December 2011 - 20:43 #363759
azx's picture

ย้ายไปใช้ Visual C++ 2010 เถอะ

By: sake on 13 December 2011 - 20:48 #363760

เรื่องธรรมดานี่ครับ Chrome เองก็แนะนำให้ใช้ OS 64bits ในการ build เหมือนกัน

By: kswisit
ContributoriPhoneAndroidIn Love
on 13 December 2011 - 21:03 #363762

ตอนใช้ก็บริโภคแรม

ตอนคอมไพล์ก็บริโภคแรม


^
^
that's just my two cents.

By: McKay
ContributorAndroidWindowsIn Love
on 13 December 2011 - 22:13 #363794 Reply to:363762
McKay's picture

???


Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)

By: kswisit
ContributoriPhoneAndroidIn Love
on 13 December 2011 - 23:10 #363817 Reply to:363794

ผมหมายถึงตอนใช้งาน เปิดแค่ 3แทป ซัดแรมไป 200+ Mb ละครับ


^
^
that's just my two cents.

By: bitworld
AndroidSymbianUbuntuWindows
on 13 December 2011 - 21:10 #363765
bitworld's picture

ถ้าใช้เครื่อง 64 บิต การคอมไพล์แบบ 32 บิตยังสามารถอ้างหน่วยความจำมากกว่า 4GB (โดยอุปมา) ได้ด้วยเหรอครับ ผมนึกว่าตัวคอมไพล์สถาปัตย์ไหนก็อ้างได้แค่นั้นซะอีก (ร้างลาการเขียนโปรแกรมมาชาตินึง ไม่ถนัดอย่างแรง เลยไม่ค่อยเข้าใจ ขอผู้รู้มาอธิบายด้วยครับ จะได้เข้าใจข่าวหน่อย พอดีงงตรงข้อ 3)

By: hexavision
iPhoneAndroidUbuntuWindows
on 13 December 2011 - 21:39 #363778 Reply to:363765

คิดว่าเป็นที่ compiler นะครับ อาจจะรันบนเครื่อง 32bit แล้ว compiler ใช้แรมเกิน 4GB เลยไม่ยอมทำงาน

ถ้าเปลี่ยนไปใช้ compiler ที่ทำงานบน 64bit แต่กำหนด Target เป็น 32bit ก็น่าจะได้

By: McKay
ContributorAndroidWindowsIn Love
on 13 December 2011 - 22:20 #363796 Reply to:363765
McKay's picture

ได้ 4 GB ต่อ process ครับ ซึ่งถ้าเป็น 32bit ทุก process รวมกันจะได้ไม่เกินประมาณ 3.0-3.5 ประมาณนี้(ตามจำนวนแรม ไม่นับ vm) และ process ละไม่เกิน 2GB


Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)

By: kichinto
Android
on 13 December 2011 - 21:47 #363782
kichinto's picture

คิดไปเองหรือเปล่านะเรานี่

คือโลโก้มันเป็น หมาไฟโดนโลกทับตาย ตายทั้งท้องกลมโต อ้วนนั่นเอง หุหุ

By: utehn
iPhoneWindows PhoneAndroidBlackberry
on 13 December 2011 - 22:06 #363788

4.เปลี่ยนไปใช้ Google chrome ให้หมดและยุบทีม :)

By: coolmilk
ContributorAndroidWindows
on 13 December 2011 - 22:39 #363806

นึกไม่ออกเลยทีเดียวว่า source จะยาวขนาดไหน

By: tekkasit
ContributorAndroidWindowsIn Love
on 13 December 2011 - 23:45 #363832
tekkasit's picture

ผมว่าที่มันยาว น่าจะเพราะไม่ได้สักแค่คอมไพล์เฉยๆ แต่เพราะมีการใช้เทคนิค Profile-Guided Optimization ที่อาศัยการบันทึกพฤติกรรมการทำงานจริงๆของโปรแกรมรุ่นตัวอย่าง เพื่อมาปรับแต่งโปรแกรมตัวจริงอีกที ซึ่งไอ้รันสองเด้ง แถมต้องเก็บสถิติตลอดนั่นน่าจะตัวเขมือบแรม ทำให้ใช้แรมเกิน 3G (ขีดจำกัดของระบบ 32-bit) ได้ง่ายๆ

จริงๆก็ไปหาเครื่อง 64-bit มาคอมไพล์ 32-bit ก็น่าจะได้ ถวายแรมไปหกถึงแปดกิ๊กฯ คงจะพอคอมไพล์สบายๆ

By: bow_der_kleine
WriterAndroidUbuntu
on 13 December 2011 - 23:53 #363836
bow_der_kleine's picture

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

By: neonicus
Android
on 14 December 2011 - 01:20 #363859

vc++ 2010 นี่มีประสิทธิภาพดีสุดแล้วหรอ
ไม่ได้อยู่ในแวดวงการ dev app พวกนี้ด้วยสิ แต่เหมือนว่าไม่ได้ยิน c compiler ตัวใหม่ๆหรือเด่นๆมาหลายยยยยยปีแล้ว

By: tomazzu
AndroidUbuntu
on 14 December 2011 - 08:15 #363889

ถ้าใช้วิธีสุถดท้าย นี่แปลว่า เครื่อง เก่า ๆ ปิดประตูเลยสินะ

By: prophecyx
iPhone
on 14 December 2011 - 10:52 #363932
prophecyx's picture

วิธีที่ 4. optimize กระบวนการ Profile-Guided Optimisation (PGO) ให้ใช้แรมน้อยลง ???
(ขำๆ นะครับ) ^ ^

By: ultimateohm
ContributorAndroidRed HatWindows
on 14 December 2011 - 14:44 #364072
ultimateohm's picture

เปิด /PAE จะได้ผลไหม แล้ว compiler มันรองรับ AWE ไหม


aka ohmohm

By: vanilla
Windows PhoneUbuntuWindowsIn Love
on 14 December 2011 - 16:16 #364106

(ขอบ่นหน่อยครับ)ขนาดตอนพัฒนายังมีปัญหาเรื่องทรัพยากรไม่พอ
แล้วตอนปล่อยออกมา โปรแกรมจะกินทรัพยากรของ user เท่าไหร่ไม่อยากคิดเลย
เวอปัจจุบันแค่เปิดไม่กี่แท๊บก็ใช้แรมมหาศาล แต่ก็ยังช้า บางทีมีค้างด้วย ขนาดใช้แรม 3G

แค่พัฒนาโปรแกรม Browser แล้วต้องใช้ทรัพยากรมากขนาดนนี้
จนผมต้องอัพฮาร์ดแวร์ตามด้วย มันไม่เวริ์คเลยครับทรัพย์ผมจาง ทำยังกับเป็นเกม 3D -*-

ปัจจุบันนี้ถ้าไม่ติด Add-ons ที่ใช้ปัจจุบัน จะย้ายไป opera ถาวรเลย เพราะเร็วมากมาย

By: mk
FounderAndroid
on 14 December 2011 - 17:22 #364122 Reply to:364106
mk's picture

มันคนละเรื่องเดียวกันเลยครับ อย่าเอามาผสมกันสิครับ

By: lancaster
Contributor
on 14 December 2011 - 18:14 #364146 Reply to:364106

ถ้าพูดแบบย่อๆ ... ยิ่งใช้พลังงานในการคอมไพล์มากเท่าไหร่ โปรแกรมที่ได้ยิ่งใช้พลังงานน้อยลงเท่านั้นครับ