[Dev] มาทดสอบคำสั่ง Loop ในรูปแบบต่าง ๆ บน Android กันดีกว่า

หลังจากได้ทดสอบคำสั่ง If บน Android ในรูปแบบต่าง ๆ มาแล้ว คราวนี้เรามาทดสอบคำสั่ง Loop ในรูปแบบต่าง ๆ บน Android กันบ้าง

Android-Developer-logo_Benchmark-Loop

สำหรับการทดสอบคำสั่ง Loop ผมจะใช้โจทย์เป็น การบวกเลขตั้งแต่ 0 ไปจนถึง n-1 ซึ่ง n ก็คือตัวเลขที่เราจะสุ่มขึ้นมา ซึ่งมีค่าอยู่ในช่วง 1-100 นั่นเอง

ซึ่ง Loop ที่จะนำมาทดสอบในคราวนี้ ได้แก่ For, While และ Do-While ถ้าพร้อมแล้ว มาดูกันเลยยยยย

 

For Loop

สำหรับ Loop For เราจะเขียนคำสั่งแบบนี้

 

While Loop

ถ้าเขียนด้วย Loop While ก็จะกลายเป็นแบบนี้

 

Do-While Loop

ซึ่งจากโจทย์ที่ผมกำหนดขึ้นมา แน่นอนว่าจะต้องเกิด Loop อย่างน้อย 1 รอบ จึงสามารถเปลี่ยนจาก Loop While เป็น Do-While ก็ได้ แบบนี้

 

Benchmark

ได้เวลาวัดผลกันแล้ววววว โดยเราจะใช้ Loop ครอบคำสั่ง แบบเดียวกับการ Benchmark ที่ผ่านมา ดังนี้

ทดสอบด้วย Input 10,000,000 ตัว บน Nexus S Android 4.1.1 กับ Nexus 4 Android 5.0 ใน Genymotion ได้ผลดังนี้

ผลการ Benchmark Loop บน Nexus S Android 4.1.1
ผลการ Benchmark Loop บน Nexus S Android 4.1.1
ผลการ Benchmark Loop บน Nexus 4 Android 5.0
ผลการ Benchmark Loop บน Nexus 4 Android 5.0

จะเห็นว่า Loop For และ While ใช้เวลาในการทำงานใกล้เคียงกัน แต่ Loop Do-While นั้น ใช้เวลาน้อยกว่า 5-40% เลยทีเดียว

 

สำหรับผลการทดสอบจากทางบ้าน ผมจะอัพเดตไว้ตรงนี้นะครับ ขอบคุณที่ร่วมทดสอบครับ

 

สำหรับการ Benchmark ครั้งนี้ ค่อนข้างชัดเจนนะครับ สรุปว่า…

Do-While Loop ทำงานได้เร็วที่สุด

 

ตอนต่อไป จะทำการ Benchmark คำสั่ง Loop เทียบกับการเขียน Recursive Function ดูบ้าง ใครจะเจ๋งกว่ากัน อดใจรออีกนิดนะครับ

ส่วนใครสนใจอยากดู Code เต็ม ๆ ไปดูได้ที่ GitHub นะครับ หรืออยาก Benchmark คำสั่งอื่น ๆ ก็ Fork ไปทำได้เลยนะ อย่าลืม Pull Request มาด้วยนะครับ จะได้เอามารวบรวมไว้ที่เดียวกัน

ส่วนใครอยากลองรันโปรแกรมดูบ้าง สามารถ Download apk ไปรันดูได้ครับ แล้วอย่าลืมรายงานผลบ้างนะ…

Leave a Reply

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.