ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: kongpair ที่ 23 มิถุนายน 2010, 11:24:36



หัวข้อ: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: kongpair ที่ 23 มิถุนายน 2010, 11:24:36
ผมนั่งพิจารณาการทำงานระหว่าง 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 มากกว่ากันครับผม
/ขอบคุณล่วงหน้าครับ


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: Popu ที่ 23 มิถุนายน 2010, 11:29:10
switch เร็วกว่าครับ ถ้าเทียบระหว่างเงื่อนไขเท่ากัน


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


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: kongpair ที่ 23 มิถุนายน 2010, 11:34:40
คือลองแล้ว มันไม่ค่อยเห็นเลยครับ

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

สรุป


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


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: m2studio ที่ 23 มิถุนายน 2010, 11:49:34
เอาใหม่ๆ ไปหาหลักฐานมายืนยันก่อน
อันนี้ Google บอกมา ตามนี้เลย
http://php100.wordpress.com/2009/06/26/php-performance-google/

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


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: 9neo ที่ 23 มิถุนายน 2010, 11:58:56
ถ้าเงื่อนใขไม่เยอะ switch เร็วกว่าครับ


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: ThongJsn ที่ 23 มิถุนายน 2010, 12:01:08
ต้องลงลึกถึงเลขฐานสองเลยละครับว่า แต่ละแบบ เทียบกันด้วยอะไร :P


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: bouy22 ที่ 23 มิถุนายน 2010, 12:04:56
ถ้าเงื่อนไขไม่เยอะ ไม่ซับซ้อนส่วนใหญ่ผมใช้ switch นะ

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

เรื่องความเร็ว ผมก็เคยสังเกตอยู่นะ แต่มันแทบไม่รู้สึกถึงความแตกต่างเลย


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: kongpair ที่ 23 มิถุนายน 2010, 12:12:37
เอาใหม่ๆ ไปหาหลักฐานมายืนยันก่อน
อันนี้ Google บอกมา ตามนี้เลย
[url]http://php100.wordpress.com/2009/06/26/php-performance-google/[/url]

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


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

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


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: jubajuba ที่ 23 มิถุนายน 2010, 12:25:38
switch case เร็วกว่าครับ จำที่อาจารย์สอนมาได้ครับ

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


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: SekRanger ที่ 23 มิถุนายน 2010, 12:35:31
Switch เร็วกว่าครับ แต่เร็วกว่าแบบ Unsignificant หรือที่แปลว่า ไม่มีนัยยะสำคัญครับ


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: pomchai ที่ 24 มิถุนายน 2010, 09:43:17
Switch เร็วกว่าครับ การหยิบไปใช้แล้วแต่สะดวกครับ แล้วเงื่อนไข แต่ส่วนใหญ่ผมจะใช้ if else ครับ  :P


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: medieval ที่ 24 มิถุนายน 2010, 10:52:00
โดยส่วนตัว ไม่ค่อยเห็นความแตกต่างชักเท่าไหร่ ใช้อันที่ใช้ได้ และง่ายสำหรับเราจำพอละ ผลลัพเท่ากัน  :wanwan009:


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: supachet2526 ที่ 25 มิถุนายน 2010, 01:47:35
ได้ความรู้ดีครับเพราะส่วนใหญ่ใช้โดยไม่สนใจครับ
ถ้าใช้ if เฉพาะตอนมี แค่ 2 เงื่อนไขแต่ถ้ามากกว่ามักใช้ switch ครับ :wanwan012:


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: step1 ที่ 25 มิถุนายน 2010, 04:43:16
มายันด้วยคน ถ้า เงื่อนไขในการตรวจสอบไม่มาก Switch เร็วกว่า
จ้า


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: ColdMoney ที่ 25 มิถุนายน 2010, 07:37:00
ปรกติใช้แต่ if  :P


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: kongpair ที่ 25 มิถุนายน 2010, 10:54:27
เพิ่งบรรลุ กระจ่าง แบบเส้นผมบังภูเขาตอนแปรงฟัน เมื่อเช้านี้นี่เอง


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

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



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


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



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


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

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

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



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






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


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: beside ที่ 25 มิถุนายน 2010, 11:03:41
ผมพึ่งเห็นกระทู้ครับ ยินดีด้วยครับพี่ก้อง ที่บรรลุแล้ว  :wanwan020:



หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: ghostba ที่ 12 กรกฎาคม 2010, 10:06:29
ความรู้ใหม่


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: chonlatee ที่ 02 พฤษภาคม 2017, 10:59:46
เพิ่งบรรลุ กระจ่าง แบบเส้นผมบังภูเขาตอนแปรงฟัน เมื่อเช้านี้นี่เอง


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

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



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


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



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


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

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

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



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






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




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


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: l3master ที่ 02 พฤษภาคม 2017, 12:05:22
if else ตลอดเลยครับ ฮ่าๆ
เวลาจะแก้เงื่อนไข หรือจะเพิ่มเติมมันง่ายดี


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: markhacd ที่ 02 พฤษภาคม 2017, 13:20:33
else if มันต้องเปรียบเทียบจนกว่าจะเจอครับ แต่ switch เปรียบเทียบที่ตรง แต่ความเร็วจริงๆไม่ต่างกันเลยนะครับ :wanwan009:


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: picharnan ที่ 02 พฤษภาคม 2017, 13:46:24
เวลาผมเขียนไม่ค่อยสนใจหรอกครับว่า switch case และ if else อย่างไหนเร็วกว่ากัน
ผมจะเลือกวิธีเขียนที่อ่าน code ได้ง่ายมากกว่าครับ


หัวข้อ: Re: อะไร เร็วกว่ากัน ระหว่าง switch และ else if
เริ่มหัวข้อโดย: snohomish ที่ 02 พฤษภาคม 2017, 15:02:42
ผมว่าเหมือนจีบสาวนะ   :wanwan020:
(switch) เจอคนนี้ใช่เลย แม่ของลูก
(if else) ผิดหวังจากคนนี้ ยังไปหาคนนี้ได้ อิอิ
 :wanwan007: