[Dev] Loop แบบไหน บน VB.NET ทำงานได้เร็วกว่ากันนะ~!!

จากที่ได้ทดสอบคำสั่ง If ในรูปแบบต่าง ๆ รวมถึงการทดสอบเพื่อเปรียบเทียบคำสั่ง If-Else และ Select-Case ไปแล้ว คราวนี้ถึงคราวของ Loop บ้าง

Visual-Basic-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 ตัว ทั้งหมด 10 รอบ บน Windows XP 32 bit กับ Windows 8.1 64 bit ได้ผลออกมาเป็นดังนี้

ผลการ Benchmark Loop บน Windows XP 32 bit
ผลการ Benchmark Loop บน Windows XP 32 bit
ผลการ Benchmark Loop บน Windows 8.1 64 bit
ผลการ Benchmark Loop บน Windows 8.1 64 bit

จะเห็นว่า การใช้คำสั่ง While และ Do-While นั้นใช้เวลาพอ ๆ กัน แต่คำสั่ง For จะใช้เวลาทำงานน้อยที่สุด และเร็วกว่า While ประมาณ 20%

จึงสรุปผลการ Benchmark ได้ว่า…

การใช้ For Loop ทำงานได้เร็วที่สุด

 

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

 

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

ส่วนใครอยากลองรันโปรแกรมดูบ้าง สามารถ Download Loop.exe ไปรันดูได้ครับ (Require .NET Framework 3.5) แล้วอย่าลืมรายงานผลบ้างนะ…

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.