อะไร เร็วกว่ากัน ระหว่าง switch และ else if

เริ่มโดย kongpair, 23 มิถุนายน 2010, 11:24:36

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

kongpair

ผมนั่งพิจารณาการทำงานระหว่าง 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 มากกว่ากันครับผม
/ขอบคุณล่วงหน้าครับ

Popu

switch เร็วกว่าครับ ถ้าเทียบระหว่างเงื่อนไขเท่ากัน

m2studio

โดยส่วนใหญ่แล้วนะจ่าเหมือนกันนะครับในเรื่องของความเร็ว (ไม่แน่ใจว่าบางภาษามีข้อยกเว้นหรือเปล่า) เพราะว่า script ที่เขียนนี้ เวลานำไปใช้จริง ไอ่เ้จ้า compiler จะเปลี่ยนไปเป็นชุดคำสั่งที่เหมือนกันเปะๆ เลยครับ
ไม่ว่าจะเป็น switch case หรือว่า if else
ร้านค้าออนไลน์แห่งใหม่เปิดให้บริการแล้ว

[direct=http://www.shoppingsija.com]ร้านค้าออนไลน์[/direct]
[direct=http://www.balahave.com]Ecommerce[/direct]
[direct=http://www.shoppingsija.com/กระเป๋าสะพาย]กระเป๋าสะพาย[/direct]
[direct=http://www.shoppingsija.com/กระเป๋าแฟชั่น]กระเป๋าแฟชั่น[/direct]

kongpair

คือลองแล้ว มันไม่ค่อยเห็นเลยครับ

ไปเจอผลการทดสอบ ที่ งง ๆ อยู่  มันขึ้นกับ จำนวนลูป และ condition
แลลผลัดกัน ขึ้นนำ ไม่มีใคร ชนะใครเลย...

สรุป


แล้วแต่ถนัด...  หรือเปล่า????
แต่พอถนัดทั้งสองตัวแล้วมันยิ่ง งง????:wanwan001:

m2studio

เอาใหม่ๆ ไปหาหลักฐานมายืนยันก่อน
อันนี้ Google บอกมา ตามนี้เลย
http://php100.wordpress.com/2009/06/26/php-performance-google/

Google บอกว่า Switch case ดีกว่าอยู่นิดหน่อย ลองดูครับ  และมีอย่างอื่นตามมาด้วยเป็นของแถม  :P
ร้านค้าออนไลน์แห่งใหม่เปิดให้บริการแล้ว

[direct=http://www.shoppingsija.com]ร้านค้าออนไลน์[/direct]
[direct=http://www.balahave.com]Ecommerce[/direct]
[direct=http://www.shoppingsija.com/กระเป๋าสะพาย]กระเป๋าสะพาย[/direct]
[direct=http://www.shoppingsija.com/กระเป๋าแฟชั่น]กระเป๋าแฟชั่น[/direct]

9neo

ถ้าเงื่อนใขไม่เยอะ switch เร็วกว่าครับ

ThongJsn

ต้องลงลึกถึงเลขฐานสองเลยละครับว่า แต่ละแบบ เทียบกันด้วยอะไร :P

bouy22

ถ้าเงื่อนไขไม่เยอะ ไม่ซับซ้อนส่วนใหญ่ผมใช้ switch นะ

แต่ ถ้า ซับซ้อน ซ่อนเงื่อน ก็ ต้อง else if เอา

เรื่องความเร็ว ผมก็เคยสังเกตอยู่นะ แต่มันแทบไม่รู้สึกถึงความแตกต่างเลย
สนใจทำธุรกิจ[direct=http://www.nongphojsin.com/]ไอศกรีมหนองโพ[/direct]คลิกเลย | ลงประกาศโฆษณา [direct=http://www.marukopost.com/]ประกาศฟรี[/direct] | [direct=http://www.uuppic.com/]เว็บฝากรูป[/direct] | [direct=http://www.jeedgame.com/]สคริปเกมแฟลช[/direct] |
ผลิตภัณฑ์เสริมอาหารออกซิเจนน้ำ [direct=http://www.adoxy-thai.com/]Adoxy[/direct]

kongpair

อ้างถึงจาก: m2studio ใน 23 มิถุนายน 2010, 11:49:34
เอาใหม่ๆ ไปหาหลักฐานมายืนยันก่อน
อันนี้ Google บอกมา ตามนี้เลย
http://php100.wordpress.com/2009/06/26/php-performance-google/

Google บอกว่า Switch case ดีกว่าอยู่นิดหน่อย ลองดูครับ  และมีอย่างอื่นตามมาด้วยเป็นของแถม  :P

เข้าใจเลย Switch แปลงเป็น Assembly Code ได้สั้นกว่านี่เอง....

ขอบคุณทุกท่านครับผม   + ท่าน m2Studio

jubajuba

switch case เร็วกว่าครับ จำที่อาจารย์สอนมาได้ครับ

แต่ผมถนัดใช้ if else มากกว่า ไม่เคยได้ใช้ switch case เลยครับ

[direct=https://www.costumeww.com]ชุดหมา[/direct]
[direct=https://www.costumeww.com]ชุดแฟนซีสุนัข[/direct]


SekRanger

Switch เร็วกว่าครับ แต่เร็วกว่าแบบ Unsignificant หรือที่แปลว่า ไม่มีนัยยะสำคัญครับ

pomchai

Switch เร็วกว่าครับ การหยิบไปใช้แล้วแต่สะดวกครับ แล้วเงื่อนไข แต่ส่วนใหญ่ผมจะใช้ if else ครับ  :P

medieval

โดยส่วนตัว ไม่ค่อยเห็นความแตกต่างชักเท่าไหร่ ใช้อันที่ใช้ได้ และง่ายสำหรับเราจำพอละ ผลลัพเท่ากัน  :wanwan009:
[direct=http://www.thaiboran.co.th]เฟอร์นิเจอร์ไทยโบราณ ฮวงจุ้ย มงคล[/direct] [direct=http://www.thaiboran.co.th/shop]สินค้าตกแต่งบ้าน โรงแรม ร้านนวดสปา[/direct]

supachet2526

ได้ความรู้ดีครับเพราะส่วนใหญ่ใช้โดยไม่สนใจครับ
ถ้าใช้ if เฉพาะตอนมี แค่ 2 เงื่อนไขแต่ถ้ามากกว่ามักใช้ switch ครับ :wanwan012:
[direct=https://www.webunique.in.th]รับเขียนเว็บไซต์ [/direct]
[direct=https://www.webunique.in.th]บริษัทรับออกแบบเว็บไซต์ [/direct]

[direct=https://www.baansecondhand.com]ขายบ้านมือสอง[/direct]

ถ้าคุณลงมือทำในสิ่งที่คุณสนใจอยู่เสมอ อย่างน้อยจะมีคนคนหนึ่งที่พอใจ

step1

มายันด้วยคน ถ้า เงื่อนไขในการตรวจสอบไม่มาก Switch เร็วกว่า
จ้า

ColdMoney

[direct=https://www.jumnong.com]รับจำนอง[/direct] [direct=https://burapasup.com]รับซื้อบ้าน[/direct] [direct=https://kadsan.com]สินค้าราคาถูก[/direct] [direct=https://checkcheap.com]เปรียบเทียบราคา[/direct]

kongpair

เพิ่งบรรลุ กระจ่าง แบบเส้นผมบังภูเขาตอนแปรงฟัน เมื่อเช้านี้นี่เอง


จริง ๆ Switch กับ else if ดูเผิน ๆ เหมือนจะทำงานคล้ายกัน

แต่จริง ๆแล้วมันมี ประโยชน์ในการใช้งานที่ออกแบบมาต่างกัน



เรื่องความเร็ว คงไม่ต้องไปคิดมาก เพราะ อย่างที่คุณ Sek ว่าไว่ ... "ไม่มีนัยสำคัญ" คือมันต่างกันแบบเราไม่รู้สึก


แต่จริง ๆ แล้ว ทั้งสองตัว ถูกสร้างขึ้นมาให้ใช้ application ที่ต่างกันคือ



ถ้าเรามีตัวแปรที่ต้องตรวจสอบ 1 ตัว แล้วมีผลลัพธ์หลาย ๆ ทางเลือก การใช้ Switch ดูเหมือนจะดีที่สุดในตอนนี้


แต่ถ้าเรามีตัวแปรที่ต้องตรวจสอบหลายตัว ยกตัวอย่างเช่น

กับข้าววันนี้ จะกินอะไรดี ?

ไปตรวจสอบสินค้าที่ตลาด
ตรวจสอบมีหมูมั้ย? ถ้ามี กินหมูทอด 
ถ้าไม่มีหมู แล้ว มีเนื้อ มั้ย ถ้ามีกินเนื้อย่าง
ถ้าไม่มีเนื้อ แล้ว มี กุ้งมั้ย ถ้ามีกินกุ้งผา
ถ้าไม่มีกุ้ง แล้ว มี ปลามั้ย ถ้ามีกินปลาทอด
ถ้าไม่มีซักอย่าง ก็ไปเซเว่น กิน Easy Go... จบ



ด้วยเหตุผลนี้เอง ว่าทำไม else if จึงทำงานได้ช้ากว่า .... ก็เพราะ มันถูกโปรแกรมด้วยโครงสร้างที่ใหญ่กว่านั้นเอง...






บรรลุ....  :'(

beside

ผมพึ่งเห็นกระทู้ครับ ยินดีด้วยครับพี่ก้อง ที่บรรลุแล้ว  :wanwan020:

ถ้าเรามองว่า...วิกฤติจะมาพร้อมกับบทเรียนดี ๆ เสมอ ก็ไม่มีเหตุอันใดที่จะต้องทุกข์ใจเพราะวิกฤติ
ตรงกันข้าม ควรจะขอบคุณวิกฤติเสียด้วยซ้ำที่เกิดขึ้นมาแต่ละครั้ง ก็ช่วยทำให้เรารู้จัก สร้างภูมิคุ้มกัน
ให้แก่ชีวิต และการทำงานอย่างรอบคอบ แยบคาย และมีความเข้าใจโลกและชีวิตเพิ่มขึ้น อย่างยากที่
จะหาได้ในยามปกติ

"พระมหาวุฒิชัย วชิรเมธี"

ghostba


chonlatee

อ้างถึงจาก: kongpair ใน 25 มิถุนายน 2010, 10:54:27
เพิ่งบรรลุ กระจ่าง แบบเส้นผมบังภูเขาตอนแปรงฟัน เมื่อเช้านี้นี่เอง


จริง ๆ Switch กับ else if ดูเผิน ๆ เหมือนจะทำงานคล้ายกัน

แต่จริง ๆแล้วมันมี ประโยชน์ในการใช้งานที่ออกแบบมาต่างกัน



เรื่องความเร็ว คงไม่ต้องไปคิดมาก เพราะ อย่างที่คุณ Sek ว่าไว่ ... "ไม่มีนัยสำคัญ" คือมันต่างกันแบบเราไม่รู้สึก


แต่จริง ๆ แล้ว ทั้งสองตัว ถูกสร้างขึ้นมาให้ใช้ application ที่ต่างกันคือ



ถ้าเรามีตัวแปรที่ต้องตรวจสอบ 1 ตัว แล้วมีผลลัพธ์หลาย ๆ ทางเลือก การใช้ Switch ดูเหมือนจะดีที่สุดในตอนนี้


แต่ถ้าเรามีตัวแปรที่ต้องตรวจสอบหลายตัว ยกตัวอย่างเช่น

กับข้าววันนี้ จะกินอะไรดี ?

ไปตรวจสอบสินค้าที่ตลาด
ตรวจสอบมีหมูมั้ย? ถ้ามี กินหมูทอด 
ถ้าไม่มีหมู แล้ว มีเนื้อ มั้ย ถ้ามีกินเนื้อย่าง
ถ้าไม่มีเนื้อ แล้ว มี กุ้งมั้ย ถ้ามีกินกุ้งผา
ถ้าไม่มีกุ้ง แล้ว มี ปลามั้ย ถ้ามีกินปลาทอด
ถ้าไม่มีซักอย่าง ก็ไปเซเว่น กิน Easy Go... จบ



ด้วยเหตุผลนี้เอง ว่าทำไม else if จึงทำงานได้ช้ากว่า .... ก็เพราะ มันถูกโปรแกรมด้วยโครงสร้างที่ใหญ่กว่านั้นเอง...






บรรลุ....  :'(




เข้าใจเลยครับ