Verified Seller หัวหน้าแก๊งเสียว
พลังน้ำใจ: 333
กระทู้: 2,721
ผมนั่งพิจารณาการทำงานระหว่าง switch และ else if ใน PHP
พบว่า มัน คล้ายกัน แตกต่างกันนิดหน่อย และ สามารถเขียนให้ผลลัพธ์ออกมาเหมือนกันได้
เช่นswitch $xxx { case "1" : break; case "2" : break; case "3" : break; default : break;}
กับ
if ($xxx == "1") {} else if ($xxx == "2") {} else if ($xxx == "3") {} else {}
อยากถามท่านที่เคยมีประสบการณ์ว่า แบบไหน มันจะทำงานเร็วกว่ากัน และ ประหยัด memory มากกว่ากันครับผม/ขอบคุณล่วงหน้าครับ
ก๊วนเสียว
พลังน้ำใจ: 32
กระทู้: 353
โดยส่วนใหญ่แล้วนะจ่าเหมือนกันนะครับในเรื่องของความเร็ว (ไม่แน่ใจว่าบางภาษามีข้อยกเว้นหรือเปล่า) เพราะว่า script ที่เขียนนี้ เวลานำไปใช้จริง ไอ่เ้จ้า compiler จะเปลี่ยนไปเป็นชุดคำสั่งที่เหมือนกันเปะๆ เลยครับไม่ว่าจะเป็น switch case หรือว่า if else
คือลองแล้ว มันไม่ค่อยเห็นเลยครับ
ไปเจอผลการทดสอบ ที่ งง ๆ อยู่ มันขึ้นกับ จำนวนลูป และ conditionแลลผลัดกัน ขึ้นนำ ไม่มีใคร ชนะใครเลย...
สรุป
แล้วแต่ถนัด... หรือเปล่า?
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 60
กระทู้: 1,411
ถ้าเงื่อนใขไม่เยอะ switch เร็วกว่าครับ
พลังน้ำใจ: 130
กระทู้: 2,304
ต้องลงลึกถึงเลขฐานสองเลยละครับว่า แต่ละแบบ เทียบกันด้วยอะไร
พลังน้ำใจ: 408
กระทู้: 2,334
ถ้าเงื่อนไขไม่เยอะ ไม่ซับซ้อนส่วนใหญ่ผมใช้ switch นะ
แต่ ถ้า ซับซ้อน ซ่อนเงื่อน ก็ ต้อง else if เอา
เรื่องความเร็ว ผมก็เคยสังเกตอยู่นะ แต่มันแทบไม่รู้สึกถึงความแตกต่างเลย
สมุนแก๊งเสียว
กระทู้: 536
switch case เร็วกว่าครับ จำที่อาจารย์สอนมาได้ครับ
แต่ผมถนัดใช้ if else มากกว่า ไม่เคยได้ใช้ switch case เลยครับ
กระทู้: 1,564
Switch เร็วกว่าครับ แต่เร็วกว่าแบบ Unsignificant หรือที่แปลว่า ไม่มีนัยยะสำคัญครับ
พลังน้ำใจ: 21
กระทู้: 839
Switch เร็วกว่าครับ การหยิบไปใช้แล้วแต่สะดวกครับ แล้วเงื่อนไข แต่ส่วนใหญ่ผมจะใช้ if else ครับ
พลังน้ำใจ: 70
กระทู้: 873
โดยส่วนตัว ไม่ค่อยเห็นความแตกต่างชักเท่าไหร่ ใช้อันที่ใช้ได้ และง่ายสำหรับเราจำพอละ ผลลัพเท่ากัน
พลังน้ำใจ: 12
กระทู้: 339
มายันด้วยคน ถ้า เงื่อนไขในการตรวจสอบไม่มาก Switch เร็วกว่าจ้า
เพิ่งบรรลุ กระจ่าง แบบเส้นผมบังภูเขาตอนแปรงฟัน เมื่อเช้านี้นี่เอง
จริง ๆ Switch กับ else if ดูเผิน ๆ เหมือนจะทำงานคล้ายกัน
แต่จริง ๆแล้วมันมี ประโยชน์ในการใช้งานที่ออกแบบมาต่างกัน
เรื่องความเร็ว คงไม่ต้องไปคิดมาก เพราะ อย่างที่คุณ Sek ว่าไว่ ... "ไม่มีนัยสำคัญ" คือมันต่างกันแบบเราไม่รู้สึก
แต่จริง ๆ แล้ว ทั้งสองตัว ถูกสร้างขึ้นมาให้ใช้ application ที่ต่างกันคือ
ถ้าเรามีตัวแปรที่ต้องตรวจสอบ 1 ตัว แล้วมีผลลัพธ์หลาย ๆ ทางเลือก การใช้ Switch ดูเหมือนจะดีที่สุดในตอนนี้
แต่ถ้าเรามีตัวแปรที่ต้องตรวจสอบหลายตัว ยกตัวอย่างเช่น
กับข้าววันนี้ จะกินอะไรดี ?
ไปตรวจสอบสินค้าที่ตลาดตรวจสอบมีหมูมั้ย? ถ้ามี กินหมูทอด ถ้าไม่มีหมู แล้ว มีเนื้อ มั้ย ถ้ามีกินเนื้อย่าง ถ้าไม่มีเนื้อ แล้ว มี กุ้งมั้ย ถ้ามีกินกุ้งผาถ้าไม่มีกุ้ง แล้ว มี ปลามั้ย ถ้ามีกินปลาทอดถ้าไม่มีซักอย่าง ก็ไปเซเว่น กิน Easy Go... จบ
ด้วยเหตุผลนี้เอง ว่าทำไม else if จึงทำงานได้ช้ากว่า .... ก็เพราะ มันถูกโปรแกรมด้วยโครงสร้างที่ใหญ่กว่านั้นเอง...
บรรลุ....
พลังน้ำใจ: 152
กระทู้: 1,499
ผมพึ่งเห็นกระทู้ครับ ยินดีด้วยครับพี่ก้อง ที่บรรลุแล้ว
ถ้าเรามองว่า...วิกฤติจะมาพร้อมกับบทเรียนดี ๆ เสมอ ก็ไม่มีเหตุอันใดที่จะต้องทุกข์ใจเพราะวิกฤติ ตรงกันข้าม ควรจะขอบคุณวิกฤติเสียด้วยซ้ำที่เกิดขึ้นมาแต่ละครั้ง ก็ช่วยทำให้เรารู้จัก สร้างภูมิคุ้มกันให้แก่ชีวิต และการทำงานอย่างรอบคอบ แยบคาย และมีความเข้าใจโลกและชีวิตเพิ่มขึ้น อย่างยากที่จะหาได้ในยามปกติ
"พระมหาวุฒิชัย วชิรเมธี"
Newbie
พลังน้ำใจ: 0
กระทู้: 17
ความรู้ใหม่
พลังน้ำใจ: 1
กระทู้: 2
เข้าใจเลยครับ