เรื่องประสิทธิภาพการทำงาน (Performance) เป็นเรื่องที่ผู้ใช้ให้ความสำคัญโดยไม่รู้ตัวแต่รู้สึกได้ โดยเฉพาะผู้ใช้กลุ่ม Pro เพราะเป็นกลุ่มที่ต้องใช้โปรแกรมของเราซ้ำๆ ไม่ใช่นานๆ ที ดังนั้นสิ่งที่ผู้ใช้ต้องการคือการตอบสนองที่รวดเร็ว และ/หรือ การประมวลผลที่รวดเร็ว

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

Apple เตรียมเครื่องมือต่างๆ ให้เราใช้มากมาย เพื่อช่วยตรวจสอบว่าโปรแกรมของเราทำงานได้ดีหรือยัง มีส่วนไหนที่สามารถปรับแก้ได้อีก เราสามารถตรวจสอบการจอง memory ได้เลยว่าแต่ละ process ของโปรแกรมเราจองหน่วยความจำอย่างไร และมีขั้นตอนไหนที่มีการเรียกใช้บ่อยที่สุด เพื่อให้เรารู้ว่าส่วนไหนที่ควรปรับแต่งก่อน
สำหรับการพัฒนาบนภาษาอื่น ผมคิดว่าชุมชนนักพัฒนาสำหรับภาษานั้นๆ น่าจะมีเครื่องมีเหล่านี้อยู่แล้ว อยากให้ลองหามาใช้กันครับ เพื่อผู้ใช้ของเรา
เคล็ดลับการปรับแต่งประสิทธิภาพ
- Be event driver: แทนที่จะให้โปรแกรมคอยตรวจสอบว่าสถานะของระบบเป็นอย่างไร ควรให้เป็นการทำงานเมื่อมี event เกิดขึ้นมากกว่า
- Be lazy : ทำเท่าที่ควรทำครับ ไม่ควรอยากทำอะไรที่วุ่นวายและซับซ้อน เพราะมันมักจะเป็นสิ่งที่ไม่ดีและมักต้องกลับมาลื้อส่วนนั้นใหม่
- Reduce your memory footprint
- Improve perceived performance
- Use the Mach-O binary format
- Prebind
- Thread
- Use accelerated libraries
- Use the Velocity Engine
ข้อที่เหลือคงทิ้งไว้แค่หัวข้อให้ลองไปศึกษาดูครับ แต่อยากให้คนที่จะพัฒนาโปรแกรมบนแต่ละ platform คิดถึงการปรับแต่งตัวโปรแกรมให้มาก โดยเฉพาะส่วนที่เป็นจุดเด่นของโปรแกรมเราจะต้องทำงานได้เร็วที่สุด และในจุดที่ไม่ใช่จุดเด้นของโปรแกรม ถ้าให้ดึงเอา lib ที่มีคนพัฒนาไว้แล้วมาใช้ได้จะดีกว่า

สิ่งเหล่านี้ (ทั้ง 10 ตอนที่ผ่านมา) คือส่วนประกอบสำคัญในการพัฒนาโปรแกรมของเราให้ดี คุณอาจจะคิดว่าโปรแกรมของเราตอนนี้มีส่วนแบ่งการตลาดน้อยมาก ไม่น่าจะต้องคิดอะไรให้วุ่นวายแต่อยากให้รู้ไว้เลยว่าทันทีที่โปรแกรมของเราตอบปัญหาให้ผู้ใช้คนหนึ่งได้ดี คนที่มีปัญหาแบบเดียวกันจะมี network ของเค้าอยู่แล้ว ซึ่งช่วยให้โปรแกรมของเรากระจายได้เร็วกว่าที่คุณคาดไว้
ผมหวังว่าบทความนี้จะเป็นประโยชน์สำหรับคนที่เริ่มต้นพัฒนาอะไรก็ตาม และหวังว่าจะมีโปรแกรมดีๆ ที่เกิดจากคนไทยมากขึ้นเรื่อยๆครับ
เอกสารอ้างอิง — Apple User Experience