คู่มือการใช้งาน CodeIgniter เวอร์ชั่น 1.7.2


คลาสวัดสมรรถนะ (Benchmarking Class)

CodeIgniter ได้เตรียมคลาสวัดสมถรรนะไว้ให้คุณ, โดยการเปิดใช้งาน เพื่อจับระยะเวลาของตำแหน่งสองตำแหน่งและนำมาคำนวณเวลาที่ต่างกัน.

ข้อสังเกตุ: class นี้ถูกทำงานโดยอัตโนมัติ โดยคุณไม่ต้องเปิดใช้งานเอง.

ส่วนเพิ่มเติม, การวัดสมรรถนะจะเริ่มทำงานตลอดเวลาทุกครั้งที่เฟรมเวิร์คมีการเรียกใช้งาน, และจบที่คลาส output เพื่อแสดงผลสุดท้ายให้ view นำไปแสดงในเว็บเบราเซอร์, เป็นวิธีการที่ทำให้ได้ระยะเวลาในการทำงานของระบบที่แม่นยำมาก.

ตารางเนื้อหา

การใช้งานคลาสวัดสมรรถนะ

Benchmark class สามารถใช้ได้ใน ตัวควบคุม(controllers), ส่วนแสดง(views), หรือใน แบบจำลอง(Models) ของคุณ. โดยมีวิธีการใช้ดังนี้:

  1. กำหนดตำแหน่งเริ่มต้นทำงาน
  2. กำหนดตำแหน่งสิ้นสุดการทำงาน
  3. ใช้ฟังก์ชั่น "elapsed time" เพื่อแสดงผลลัพธ์ที่ได้

นี่คือตัวอย่างการใช้งานจริง:

$this->benchmark->mark('code_start');

// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ

$this->benchmark->mark('code_end');

echo $this->benchmark->elapsed_time('code_start', 'code_end');

ข้อสังเกตุ: คำว่า "code_start" และ "code_end" ไม่ใช่คำที่จำเป็นต้องใช้. เหล่านี้เป็นคำตัวอย่างง่ายๆ ให้คุณเห็นการสร้างตำแหน่งทั้งสองจุด. คุณสามารถใช้คำใดๆ ก็ได้ตามที่คุณต้องการ, และคุณสามารถกำหนดให้ใช้งานได้หลายๆ ตำแหน่ง. ตามตัวอย่างนี้:

$this->benchmark->mark('dog');

// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ

$this->benchmark->mark('cat');

// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ

$this->benchmark->mark('bird');

echo $this->benchmark->elapsed_time('dog', 'cat');
echo $this->benchmark->elapsed_time('cat', 'bird');
echo $this->benchmark->elapsed_time('dog', 'bird');

กำหนดกระบวนการวัดสมถรรนะของคุณ

ถ้าคุณต้องการกำหนดช่วงข้อมูลการ benchmark ของคุณ ให้คุณลองใช้งานในรูปแบบของ ตัวรวมข้อมูล(Profiler) เพื่อกำหนดตำแหน่งทั้งหมดเป็นคู่ๆ , และทำการกำหนดต่อท้ายชื่อด้วยคำว่า _start และ _end. ให้เป็นคู่ของตำแหน่งนั้นๆ ตัวอย่างเช่น:

$this->benchmark->mark('my_mark_start');

// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ

$this->benchmark->mark('my_mark_end');

$this->benchmark->mark('another_mark_start');

// โค้ดที่ใช้ประมวลผลอื่นๆ ของคุณ

$this->benchmark->mark('another_mark_end');

โปรดอ่านในหน้า Profiler เพื่อดูข้อมูลเพิ่มเติม.

แสดงผลของระยะเวลาการทำคำสั่ง

ถ้าคุณต้องการแสดงผลของเวลาที่ได้ทำงานผ่านมาแล้ว (elapsed time) จาก CodeIgniter ในขณะนั้น ไปจนถึงการแสดงผลลัพธ์ครั้งสุดท้ายที่เบราเซอร์, วิธีง่ายๆ ในการนำไปแสดงในโครงสร้างของ view (view template) คือ:

<?php echo $this->benchmark->elapsed_time();?>

คุณจะสังเกตุได้ว่ามันเหมือนกับฟังก์ชั่นที่เคยได้ยกตัวอย่างไปข้างต้น ที่นะมาคำนวณระยะเวลาของตำแหน่งสองตำแหน่ง, เพียงแต่คุณจะ ไม่ใช้ parameters ใดๆ. เมื่อใดที่คุณไม่ระบุ parameters, CodeIgniter จะไม่หยุดทำการ benchmark จนกว่าจะสิ้นสุดการทำงาน และนำไปแสดงผลลัพธ์ที่จะส่งให้เว็บเบราเซอร์. หมายความว่าจะมีการคำนวณระยะเวลาทั้งหมด โดยไม่เจาะจงแค่บางคำสั่ง

อีกทางหนึ่งคุณสามารถแสดง elapsed time ของคุณใน view โดยการใช้ pseudo-variable, ถ้าคุณไม่ได้เขียนโค๊ดแบบ PHP ปกติ:

{elapsed_time}

ข้อสังเกตุ:ถ้าคุณต้องการวัดสมรรถนะ ฟังก์ชั่นต่างๆ ใน controller ของคุณ คุณต้องระบุ ตำแหน่งเริ่มต้น/ตำแหน่งสิ้นสุด ด้วย.

แสดงผลการใช้ทรัพยากรเมมโมรี่ (Memory Consumption)

ถ้า PHP ของคุณ ได้ติดตั้งผ่านการคอนฟิก (config) ด้วย --enable-memory-limit, คุณสามารถแสดงผลการใช้ทรัพยากรเมมโมรี่ (Memory Consumption) ว่าถูกระบบใช้งานไปกับคำสั่งเหล่านั้นไปเท่าไร โดยการระบุคำสั่งด้านล่างในไฟล์ view ดังนี้:

<?php echo $this->benchmark->memory_usage();?>

ข้อสังเกตุ: ฟังก์ชั่นนี้ใช้ได้ในไฟล์ view เท่านั้น. แสดงผลการใช้ทรัพยากรจะสะท้อนถึงการใช้งานเมมโมรี่ทั้งหมดในระบบ.

อีกทางหนึ่งคุณสามารถแสดงผลการใช้ทรัพยากรเมมโมรี่ ของคุณใน view โดยการใช้ pseudo-variable, ถ้าคุณไม่ได้เขียนโค๊ดแบบ PHP ปกติ:

{memory_usage}