GotoKnow
  • เข้าระบบ
  • สมัครสมาชิก
  • แผงจัดการ
  • ออกจากระบบ
GotoKnow

ยังคั้นไหว (Code Optimization)

ช่วงสองสามวันนี้ผมพยายาม optimize ตัวโปรแกรม KnowledgeVolution ให้สามารถรองรับผู้ใช้จำนวนประมาณ 500 requests ต่อวินาทีได้ (เรียกว่าเรามี load ประมาณ 0.002 คือ 1/500 นั่นเอง) และได้ผลเป็นที่น่าพอใจครับ

Ruby on Rails เป็น framework ที่ช่วยในการพัฒนาโปรแกรมได้เร็ว แต่มีข้อจำกัดที่จะได้ระบบที่ค่อนข้างช้า สอบถามไปทางพรรคพวกที่อเมริกาก็บอกมาคำเดียวว่าเปลี่ยนเครื่องแม่ข่ายสิ เพราะการพัฒนาซอฟท์แวร์ปัจจุบันเราจะเน้นความเร็วในการพัฒนาครับ เรื่องความเร็วของการทำงานนั้น เรามองไปที่การใช้ hardware ที่เร็วขึ้นแทน เพราะ hardware ปัจจุบันนั้นถูกมาก เครื่องแม่ข่ายที่ดีจริงๆ นั้น ราคาอยู่ที่หลักแสนบาท ไม่ใช่ล้านบาทอย่างในอดีต แต่ค่าจ้างโปรแกรมเมอร์นั้นแพงกว่าในอดีตเยอะมาก

เรื่องการเปลี่ยนเครื่องแม่ข่ายนั้นเราจะเปลี่ยนอยู่แล้ว แต่ในตอนนี้เราอยากให้ระบบที่ทำงานอยู่ในเครื่องปัจจุบันสามารถรองรับผู้ใช้ปกติได้ เครื่องแม่ข่ายที่เราใช้อยู่ปัจจุบันนั้น เราไม่ค่อยอยากจะเรียกว่าเครื่องแม่ข่ายเท่าไหร่ เพราะมันคือเครื่อง desktop ธรรมดาๆ นี่เอง เป็นเครื่อง Pentium 4 ความเร็ว 3.0GHz มีหน่วยความจำ 2GB และมี hard disk แบบ IDE ขนาด 80GB อยู่สองตัว เรียกว่าเครื่อง desktop ใหม่ๆ ที่หลาย คนใช้อยู่เผลอๆ จะทำงานได้เร็วกว่าครับ

เมื่อ hardware มีข้อจำกัดนี้ ก็เป็นหน้าที่ของโปรแกรมเมอร์ที่จะ optimize code นั่นคือการ "คั้น" ให้โปรแกรมเราสามารถทำงานได้เร็วที่สุดเท่าที่ทรัพยากรจะมีได้ เรื่อง code optimization นี่เป็นศิลปะการเขียนโปรแกรมที่ไม่ได้ให้ความสำคัญกันแล้วในปัจจุบัน นี่เป็นเรื่องแปรผกผันกับความเร็วที่เพิ่มขึ้นของ hardware ครับ อย่างไรก็ตามผมก็เห็นว่า code optimization ก็ยังเป็นทักษะที่โปรแกรมเมอร์ทุกคนควรจะมี ประสบการณ์ที่ผมอยากแบ่งปันก็คือการ optimize แล้วโปรแกรมของเราเร็วขึ้นนั้น เป็นความสนุกที่ไม่แพ้เรื่องไหนๆ ทีเดียวครับ

KnowledgeVolution ยังมีส่วนให้ optimize อีกมาก ยิ่ง optimize ความเร็วก็จะยิ่งเพิ่มขึ้นใน hardware ปัจจุบัน นอกจากนี้อีกไม่นานเราจะเปลี่ยนไปใช้เครื่องแม่ข่ายของจริง วันนั้น GotoKnow.org รับประกันความเร็วไม่แพ้ site ไหนๆ แน่นอนครับ

บันทึกนี้เขียนที่ GotoKnow โดย 

หมายเลขบันทึก: 36238
เขียน:
แก้ไข:
ความเห็น: 5
อ่าน:
สัญญาอนุญาต: สงวนสิทธิ์ทุกประการ

ความเห็น (5)

ต้องขอบพระคุณอ.ธวัชชัย+อ.จันทวรรณเป็นอันมากที่ได้กรุณาอำนวยความสะดวกให้กับ Blogger อย่างพวกเรา ขออะไรด็ได้มาจริง ๆ บอกได้คำเดียวค่ะ ยอดเยี่ยม

     อาจารย์ครับ รู้สึกเหนื่อยแทนอาจารย์มากครับ ในเรื่องความเร็วตอนนี้ยอมรับได้อยู่นะครับ
     แต่ในส่วนของผมเมื่อ Login เข้าไปแล้วจะขึ้น error 500 ทำอะไรต่อไม่ได้เลยครับ เกิดขึ้นหลายวันแล้วครับ แต่นึก ๆ ว่าเป็นที่เครื่องผมเอง ไม่ทราบผมจะต้องจัดการอย่างไรบ้างครับ
     ปล.ส่งเมล์ให้อาจารย์แล้วด้วยครับ
     ขอบพระคุณล่วงหน้านะครับ ในความทุ่มเทเพื่อพัฒนาเวทีนี้เพื่อ Bloggers ทั้งหลายครับ

ขอชื่นชมด้วยคนค่ะ เชื่อว่าคนที่เห็นด้วยกับอ.ธวัชชัยว่า

code optimization ก็ยังเป็นทักษะที่โปรแกรมเมอร์ทุกคนควรจะมี ประสบการณ์ที่ผมอยากแบ่งปันก็คือการ optimize แล้วโปรแกรมของเราเร็วขึ้นนั้น เป็นความสนุกที่ไม่แพ้เรื่องไหนๆ ทีเดียวครับ"

ก็ยังมีอยู่ค่ะ อยากให้อาจารย์ทั้ง 2 ท่านหาคนช่วยเรื่องนี้ได้เร็วๆจัง เราจะประกาศได้ที่ไหนอีกดีค่ะ ถ้าประชาสัมพันธ์ดีๆ เราน่าจะหาได้บ้างไหมคะในเมืองไทยเรานี่ ใครรู้ช่วยกันหน่อยเถิด

ถ้าใช้ Yarv จะเร็วขึ้นไหมครับ

ref. Ruby Implementations Shootout: Ruby vs Yarv vs JRuby vs Gardens Point Ruby .NET vs Rubinius vs Cardinal 

เราเลือกใช้ stable release ของ Ruby ครับ เมื่อ Ruby 1.9 (Yarv) release เราก็จะใช้ทันทีครับ