ข้อแนะนำ

  • ฮิสโตแกรมที่แสดงจำนวนครั้งที่แต่ละคำสั่งทำงานนั้น เป็นผลของการทำงานเมื่อใช้ปริมาณข้อมูลตามที่ระบุใน @Profile เช่น from=1, to=100, step=5 ปริมาณข้อมูลที่ทดลองจึงมีขนาด 1, 6, 11, 16, ..., 96 แต่ละขนาดจะมีฮิสโตแกรมหนึ่งรูป แต่เราแสดงได้แค่รูปเดียว โดยตอนเริ่มจะเลือกแสดงของกรณีที่ใช้ปริมาณข้อมูลมากสุดในการทดลอง เช่นจากตัวอย่างตอนต้นจะแสดงของกรณีมีขนาด 96 ในกรณีที่ต้องการดูของปริมาณข้อมูลอื่น ๆ ในการทดลอง ให้นำเมาส์ไปวางบนบริเวณกราฟเส้น จะเห็นเส้นตามแนวดิ่ง และเห็นฮิสโตแกรมที่เปลี่ยนไปตามตำแหน่งของเส้นแนวดิ่ง ผู้ใช้สามารถเลือกแสดงฮิสโตแกรมของชุดทดลองได้ตามต้องการ
  • ใน histogram ควรดูแท่งของคำสั่ง if กับผลหลังกรณีที่เป็นจริง ถ้าใกล้เคียงกันแสดงว่า ผลของ if ส่วนใหญ่เป็นจริง ถ้าห่างกันมาก ๆ ย่อมแสดงว่าผลของ if ส่วนใหญ่เป็นเท็จ ตรงนี้ช่วยให้เราเข้าใจการทำงานมากขึ้นว่า ข้อมูลขาเข้ามีผลต่อการทำงานของอัลกอริทึมอย่างไร
  • หากต้องการนำผลการทดลองของกราฟหรือฮิสโตแกรมหลาย ๆ รูปมาเปรียบเทียบ อย่าลืมดูค่าจริงด้วย เพราะแท่งที่ยาวมากของฮิสโตแกรมหนึ่งอาจมีค่าน้อยกว่า อีกแท่งที่สั้นกว่าของฮิสโตแกรมอีกรูปก็ได้ จึงต้องดูค่าตัวเลขประกอบด้วย หรือในกรณีเปรียบเทียบกราฟเส้น ก็อย่าลืมดูค่าของแกน x และ แกน y ด้วย เพราะมักมีช่วงของค่าบนแกน x และ y ไม่เท่ากัน
  • ต้องระวังอย่างยิ่งในการนำผลการทดลองของหลายโปรแกรมมาเปรียบเทียบกัน เช่น นำของ heap sort มาเปรียบเทียบกับ merge sort เพราะแต่ละคำสั่งมีภาระจริงต่างกัน การสรุปว่าโปรแกรม A ที่ทำคำสั่ง a ครั้ง เร็วกว่า โปรแกรม B ที่ทำคำสั่ง b ครั้ง เพียงเพราะเห็นว่า a > b นั้น ไม่ควรด่วนสรุปเช่นนั้น ยกเว้นเสียแต่ว่า a มากกว่า b มาก ๆ ๆ
  • การเดาลักษณะการเติบโตของฟังก์ชันในกราฟเส้น ให้ลองเปลี่ยนค่าของ f(n,c) ใต้กราฟดู โดย n คือปริมาณข้อมูล (ค่าบนแกน x) ส่วน c คือจำนวนครั้งทั้งหมดที่คำสั่งทำงานจากการทดลอง) (มักตั้งไว้ให้เป็น f(n,c) = c) หากเราสงสัยว่าน่าจะเป็นฟังกชันใด ก็ลองนำฟังก์ชันที่เดาไปหารค่า c แล้วดูว่าได้กราฟเส้นที่มีความชันเป็น 0 ขนานแกน x หรือไม่ ถ้าใช่ก็น่าจะเป็นแบบที่เราเดาไว้
    • กราฟที่แลดูเหมือนจะเป็นฟังก์ชันเชิงเส้น ก็ให้ลองตั้งค่าของ f(n,c) = c/n คือให้หารด้วยปริมาณข้อมูลดู
    • กราฟที่มีลักษณะโค้ง ๆ รู้สึกว่าจะคล้ายพาราโบลา ก็ให้ลองตั้งค่าของ f(n,c) = c/(n*n)
    • กราฟที่มีลักษณะโค้ง ๆ รู้สึกว่าจะคล้าย log ก็ให้ลองตั้งค่าของ f(n,c) = c/Math.log(n) แต่ถ้าในการทดลองให้ปริมาณข้อมูล (n) เป็น 0 หรือ 1 จะทำให้การหารด้วย Math.log(n) มีปัญหา ก็ให้หารด้วย Math.log(n+2) หรือ Math.log(n+1) ก็ได้

สมชาย ประสิทธิ์จูตระกูล