[Dev] ทดสอบคำสั่ง If ในรูปแบบต่าง ๆ บน Android กันหน่อย

ก่อนหน้านี้ได้ลองเขียน Benchmark คำสั่งต่าง ๆ บน VB.NET ไปแล้ว คราวนี้มาลองบน Android กันบ้าง

Android-Developer-logo_Benchmark-If

โดยบทความนี้ จะเขียนคำสั่งเพื่อ Benchmark คำสั่ง If ในรูปแบบต่าง ๆ บน Android โดยใช้โจทย์เดียวกับบทความตอน ว่าด้วยเรื่องของ If บน VB.NET ~ แล้วคุณจะต้องอึ้งกับสิ่งที่มันเป็น!? ก็คือ… สุ่มเลขในช่วง 1-100 ขึ้นมา แล้วตรวจสอบว่า อยู่ในช่วง 1-50 หรือ 51-100 มาเขียนบน Android กันบ้าง

เพื่อไม่เป็นการเสียเวลา มาเริ่มกันเลย…

 

If-Else

สำหรับการเขียนคำสั่ง If-Else สำหรับเงื่อนไขที่กำหนด มี Code ดังนี้

 

Default-If

ส่วน Default-If ก็…

 

Ternary Operator

และแบบสุดท้าย Ternary Operator ก็…

 

Benchmark

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

แปลงจาก Nano Time ให้เป็นหน่วย Millisecond ด้วยการหารด้วย 1,000,000

โดยที่ randomList เป็นชนิด ArrayList<Byte> ซึ่งได้ทำการ Generate ค่า Random ระหว่าง 1-100 ใส่เข้าไป

แล้วทดสอบโดยการสร้าง randomList ขึ้นมา 10,000,000 ตัว เพื่อทดสอบคำสั่งทั้ง 3 รูปแบบ โดยทำการทดสอบทั้งหมด 10 รอบ แล้วนำไปรันบน Nexus S Android 4.1.1 กับ Nexus 4 Android 5.0 บน Genymotion ได้ผลดังนี้

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

จะเห็นว่า เวลาในการทำงานของแต่ละรูปแบบนั้น ให้ผลใกล้เคียงกัน

 

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

 

ในตอนหน้า จะทำการ Benchmark คำสั่ง If-Else เทียบกับ Switch-Case ดูบ้าง ซึ่งหลาย ๆ คนเคยสงสัย รวมถึงผมเองด้วย ว่าแบบไหนน่าจะดีกว่ากัน

ส่วนใครสนใจอยากดู 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.