[Dev] ว่าด้วยเรื่องของ If บน VB.NET ~ แล้วคุณจะต้องอึ้งกับสิ่งที่มันเป็น!?

ไม่ได้เขียนเกี่ยวกับ Visual Basic ซะนานเลย วันนี้เลยเอาเรื่องของ If มาเขียนบ้าง ส่วนพาดหัวยอดนิยม จะล่อเพจ #จบข่าว ไม๊นะ

Visual-Basic-logo_Benchmark-If

บทความนี้ ไม่ใช่จะสอนใช้คำสั่ง If นะ มันก็พื้นฐานเกิ๊น แต่จะมาพูดถึงการเขียนคำสั่ง If ในรูปแบบต่าง ๆ ให้ดู พร้อมกับ Benchmark ในเรื่องของความรวดเร็วในการทำงาน ให้ดูกันจะ ๆ ว่าแบบไหนมันดีกว่ากัน เริ่มน่าสนใจกันไม๊ครับ

ก่อนอื่น… ขอให้เครดิตกับบทความเรื่อง เปรียบเทียบความเร็วในการตรวจหาตัวแปรว่าง ของเว็บพี่กรกฎ เป็นแรงบันดาลใจ ทำให้เกิดเป็นบทความนี้ขึ้นมา อันที่จริงเรื่องนี้ ผมตั้งใจจะเขียนมานานมาก เกิน 1 ปีแน่ ๆ แล้วก็ลืมทุกที แห่ะ ๆ

สมมติเงื่อนไขง่าย ๆ เลยแล้วกัน ว่า มีตัวแปรที่จะเก็บค่าได้ตั้งแต่ 1-100 แล้วมีเงื่อนไขว่า ถ้าค่าในตัวแปรมีค่า 1-50 จะ Return False แต่ถ้าเป็น 51-100 จะ Return True

เอาง่าย ๆ แบบนี้ล่ะ คงไม่มีใครไม่เข้าใจเน๊อะ~!!

 

If-Else

พื้นฐานสุด ๆ เลย ก็เขียนคำสั่งโดยใช้ If-Else แบบนี้

 

Default-If

หรือเราอาจจะกำหนด Default ด้วยการ Initial ค่าให้ตอนประกาศตัวแปร แล้วค่อย If อย่างเดียว ก็จะเป็น…

สั้นดีเน๊อะ ส่วนตัวชอบเขียนสไตล์นี้บ่อย ๆ

 

If Operator

ใน VB.NET ยังมี If Operator ให้ใช้งานด้วย ซึ่งก็จะเหมือนกับ Ternary operator ของภาษาอื่น ๆ ที่ใช้ตัว ? และ : นั่นเอง โดยสามารถเขียนได้แบบนี้

สั้นเข้าไปอีก แบบนี้ก็ชอบเขียนเหมือนกัน

 

Benchmark

แล้วแบบไหนดีกว่ากันล่ะ~!!

ก็นั่นนะซิ… ผมก็เลยเขียนคำสั่งทดสอบซะเลย โดยเอา Loop ครอบซะ เพื่อวัดเวลาที่ใช้ในการทำงานออกมาเป็นหน่วย Millisecond ดังนี้…

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

แล้วทดสอบโดยการสร้าง randomList ขึ้นมา 100,000,000 ตัว เพื่อทดสอบคำสั่งทั้ง 3 รูปแบบ โดยทำการทดสอบทั้งหมด 10 รอบ แล้วนำไปรันบน Windows XP 32 bit กับ Windows 8.1 64 bit ได้ผลดังนี้

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

จะเห็นว่า การใช้คำสั่ง If Operator ใช้เวลาน้อยที่สุด ส่วน If-Else และ Default-If นั้น ให้ผลการทำงานแทบจะไม่ต่างกัน

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

การใช้ If Operator ประมวลผลได้เร็วที่สุด #จบข่าว

 

ในตอนหน้า ผมจะ Benchmark เทียบคำสั่ง If-ElseIf-Else กับ Select-Case ให้ดู ว่าแบบไหนเร็วกว่ากัน

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

ส่วนใครอยากลองรันโปรแกรมดูบ้าง สามารถ Download If.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.