ข้อแนะนำ
- ฮิสโตแกรมที่แสดงจำนวนครั้งที่แต่ละคำสั่งทำงานนั้น เป็นผลของการทำงานเมื่อใช้ปริมาณข้อมูลตามที่ระบุใน
@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) ก็ได้
|