ขอถามเป็นความรู้ เรื่องความเร็วของ html vs php ครับ

เริ่มโดย amazegu, 24 กุมภาพันธ์ 2013, 23:22:35

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

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

amazegu

สมมติผมจะสร้างหน้าเว็บสัก1000หน้า สมมติว่าข้อมูลเหมือนกัน
html จะประมวลผลเร็วกว่าถูกต้องหรือเปล่าครับ แต่จะช้าตอนเขียนเพราะเราต้องสร้างไฟล์ทั้ง 1000 หน้า
ในขณะที่phpอาจจเขียนเพียงแค่ไฟล์เดียวแต่ใช้ query string เอา

ขอบคุณครับ :wanwan017: :wanwan017: :wanwan017:

EntServ

ไม่รู้นะ อันนึงอ่านจากเนื้อที่ฮาร์ดดิส กะอีกอันอ่านจาก Buffer คิดว่าอ่านจาก Buffer น่าจะเร็วกว่า
รับทำระบบ Streaming Server อยากได้เว็บสตรีมมิ่งหล่อๆ ติดต่อ PM ครับ

amazegu

อ้างถึงจาก: newton ใน 24 กุมภาพันธ์ 2013, 23:27:36
ไม่รู้นะ อันนึงอ่านจากเนื้อที่ฮาร์ดดิส กะอีกอันอ่านจาก Buffer คิดว่าอ่านจาก Buffer น่าจะเร็วกว่า
หมายถึงว่า ถ้าเป็น html จะไม่มีระบบบัฟเฟอร์ช่วยในเรื่องความเร็วหรือครับ

guitarnote

HTML เร็วกว่าอยู่แล้วครับ php ต้องประมวลผลผ่านเครื่อง sv แล้วแปลงเป็น HTML ส่งมาให้เราอ่าน

แต่สำหรับเรื่องการจัดการแอพพลิเคชั่น php ถูกออกแบบมาให้จัดการได้ง่ายกว่าครับ

seoland


NaiTan

คุณจะเทียบตอนสร้างไฟล์หน้าเว็บ หรือตอนอ่านไฟล์หน้าเว็บละ
ถ้าอ่านมาแสดงผลอะ html ย่อมเร็วกว่าอยู่แล้ว เพราะไม่ต้องประมวลผลภาษาจากฝั่งเซิร์ฟเวอร์เลย มันเป็นภาษาพื้นฐานในการจัดการแสดงผลออกทางหน้าเว็บ สามารถส่งมาแบบต้นฉบับมาให้บราวเซอร์ฝั่ง Client ทำการแสดงผลได้เลย

ส่วน php ถ้าอ่านมาแสดงผลจะช้ากว่า เพราะจะต้องผ่านกระบวนการประมวลผลภาษา php ที่ฝั่ง server ก่อน แล้วค่อยส่งผลมาให้ฝั่ง client เป็นรูปแบบภาษา html เพื่อให้สามารถแสดงผลบนบราวเซอร์ได้


EntServ

อ้างถึงจาก: amazegu ใน 24 กุมภาพันธ์ 2013, 23:33:15
อ้างถึงจาก: newton ใน 24 กุมภาพันธ์ 2013, 23:27:36
ไม่รู้นะ อันนึงอ่านจากเนื้อที่ฮาร์ดดิส กะอีกอันอ่านจาก Buffer คิดว่าอ่านจาก Buffer น่าจะเร็วกว่า
หมายถึงว่า ถ้าเป็น html จะไม่มีระบบบัฟเฟอร์ช่วยในเรื่องความเร็วหรือครับ


เอ่อ ไม่ใช่อย่างนั้นครับ

ถ้าข้างในมีแต่ HTML Tag อย่างเดียว ไฟล์ php จะทำงานได้ช้ากว่าเพราะต้องไปแปลงจาก phpอีกที แต่ถ้าอ่านต่อกันหลายๆไฟล์ php จะทำงานได้เร็วกว่า เพราะถูกเปลี่ยนเป็น Buffer เก็บไว้แล้ว

พอเข้าใจไหม แต่ผมก็ไม่ชัวส์เท่าไหร่นะครับ ว่ามันเป็นอย่างนี้จริงๆไหม
รับทำระบบ Streaming Server อยากได้เว็บสตรีมมิ่งหล่อๆ ติดต่อ PM ครับ

NaiTan

อ้างถึงจาก: newton ใน 24 กุมภาพันธ์ 2013, 23:44:09
อ้างถึงจาก: amazegu ใน 24 กุมภาพันธ์ 2013, 23:33:15
อ้างถึงจาก: newton ใน 24 กุมภาพันธ์ 2013, 23:27:36
ไม่รู้นะ อันนึงอ่านจากเนื้อที่ฮาร์ดดิส กะอีกอันอ่านจาก Buffer คิดว่าอ่านจาก Buffer น่าจะเร็วกว่า
หมายถึงว่า ถ้าเป็น html จะไม่มีระบบบัฟเฟอร์ช่วยในเรื่องความเร็วหรือครับ


เอ่อ ไม่ใช่อย่างนั้นครับ

ถ้าข้างในมีแต่ HTML Tag อย่างเดียว ไฟล์ php จะทำงานได้ช้ากว่าเพราะต้องไปแปลงจาก phpอีกที แต่ถ้าอ่านต่อกันหลายๆไฟล์ php จะทำงานได้เร็วกว่า เพราะถูกเปลี่ยนเป็น Buffer เก็บไว้แล้ว

พอเข้าใจไหม แต่ผมก็ไม่ชัวส์เท่าไหร่นะครับ ว่ามันเป็นอย่างนี้จริงๆไหม
ไม่เกี่ยวกันเลย แลมั่วๆนะครับ  เหอะๆ

EntServ

อ้างถึงจาก: NaiTan ใน 24 กุมภาพันธ์ 2013, 23:50:38
อ้างถึงจาก: newton ใน 24 กุมภาพันธ์ 2013, 23:44:09
อ้างถึงจาก: amazegu ใน 24 กุมภาพันธ์ 2013, 23:33:15
อ้างถึงจาก: newton ใน 24 กุมภาพันธ์ 2013, 23:27:36
ไม่รู้นะ อันนึงอ่านจากเนื้อที่ฮาร์ดดิส กะอีกอันอ่านจาก Buffer คิดว่าอ่านจาก Buffer น่าจะเร็วกว่า
หมายถึงว่า ถ้าเป็น html จะไม่มีระบบบัฟเฟอร์ช่วยในเรื่องความเร็วหรือครับ


เอ่อ ไม่ใช่อย่างนั้นครับ

ถ้าข้างในมีแต่ HTML Tag อย่างเดียว ไฟล์ php จะทำงานได้ช้ากว่าเพราะต้องไปแปลงจาก phpอีกที แต่ถ้าอ่านต่อกันหลายๆไฟล์ php จะทำงานได้เร็วกว่า เพราะถูกเปลี่ยนเป็น Buffer เก็บไว้แล้ว

พอเข้าใจไหม แต่ผมก็ไม่ชัวส์เท่าไหร่นะครับ ว่ามันเป็นอย่างนี้จริงๆไหม
ไม่เกี่ยวกันเลย แลมั่วๆนะครับ  เหอะๆ

:wanwan019:  555+ ผมคิดไปไกลเอาเรื่องดาต้าเบสมาพ่วงเข้าไปด้วย
รับทำระบบ Streaming Server อยากได้เว็บสตรีมมิ่งหล่อๆ ติดต่อ PM ครับ

www.namkangclick.com

เท่าที่เข้าเว็บมาหลายเว็บhtmlเร็วกว่านะ(ใช้ความรู้สึก)

tdelphi

ผมตอบให้เอง ไม่ต้องเถียงกัน

html เป็น output สุดท้าย ที่ browser ต้องนำมา rendor หน้าจอ เพื่อสร้าง Graphic User Interface ตามคำสั่งในภาษา html    แบบนี้เราเรียกว่า static web page หรือ static html

php เป็นภาษาเขียนโปรแกรมแบบ interpreter คือ ต้อง compile (แปลภาษา) ทุกครั้งเมื่อเรียกให้ทำงาน และ gen html output ออกมา เพื่อส่งให้ browser นำไปประมวลผลต่อ  แบบนี้เราเรียกว่า dynamic web page หรือ dynamic html


ซึ่งถ้าเทียบกันแบบตัวต่อตัว  เช่น index.html กับ index.php
ตัว index.html ย่อมอ่านและส่งข้อมูลได้เร็วกว่า เพราะ ไม่ต้องประมวลผลใดๆ เนื่องจาก เป็น html output อยู่แล้ว webserver จะอ่านไฟล์ แล้วส่งกลับไปได้เลย

แต่ข้อเสียของ static html ก็มี เช่น ไม่สามารถเชื่อมต่อฐานข้อมูลได้ หรือ ประมวลผลซับซ้อนได้
จึงเป็นที่มาของการออกแบบ CGI (common gateway interface) ในสมัยแรกๆ (perl,c++) และพัฒนามาเป็น webserver modules (mod) ในภายหลัง เช่น php ที่เราใช้กันในปัจจุบัน (แต่ก็ยังมีเป็นรูปแบบอื่นๆ อีกเช่น fast-cgi  เป็นต้น)

ถามว่า ถ้าอยากจะให้ php เร็วใกล้เคียงกับ html ทำได้ไหม

ขอตอบว่า ทำได้นะครับ และไม่ยากด้วย

คือ การใช้ caching มาช่วย ในการ cache html output ที่ถูก gen ไว้แล้ว สำหรับหน้าที่มี output ซ้ำๆ กัน จะทำให้ได้ความเร็วพอๆ กันเลย ต่างกันนิดเดียว แต่คุ้มค่ามากเพราะ บริหารจัดการกับข้อมูล (data) ได้ง่ายกว่า





EntServ

อ้างถึงจาก: tdelphi ใน 25 กุมภาพันธ์ 2013, 00:30:15
ผมตอบให้เอง ไม่ต้องเถียงกัน

html เป็น output สุดท้าย ที่ browser ต้องนำมา rendor หน้าจอ เพื่อสร้าง Graphic User Interface ตามคำสั่งในภาษา html    แบบนี้เราเรียกว่า static web page หรือ static html

php เป็นภาษาเขียนโปรแกรมแบบ interpreter คือ ต้อง compile (แปลภาษา) ทุกครั้งเมื่อเรียกให้ทำงาน และ gen html output ออกมา เพื่อส่งให้ browser นำไปประมวลผลต่อ  แบบนี้เราเรียกว่า dynamic web page หรือ dynamic html


ซึ่งถ้าเทียบกันแบบตัวต่อตัว  เช่น index.html กับ index.php
ตัว index.html ย่อมอ่านและส่งข้อมูลได้เร็วกว่า เพราะ ไม่ต้องประมวลผลใดๆ เนื่องจาก เป็น html output อยู่แล้ว webserver จะอ่านไฟล์ แล้วส่งกลับไปได้เลย

แต่ข้อเสียของ static html ก็มี เช่น ไม่สามารถเชื่อมต่อฐานข้อมูลได้ หรือ ประมวลผลซับซ้อนได้
จึงเป็นที่มาของการออกแบบ CGI (common gateway interface) ในสมัยแรกๆ (perl,c++) และพัฒนามาเป็น webserver modules (mod) ในภายหลัง เช่น php ที่เราใช้กันในปัจจุบัน (แต่ก็ยังมีเป็นรูปแบบอื่นๆ อีกเช่น fast-cgi  เป็นต้น)

ถามว่า ถ้าอยากจะให้ php เร็วใกล้เคียงกับ html ทำได้ไหม

ขอตอบว่า ทำได้นะครับ และไม่ยากด้วย

คือ การใช้ caching มาช่วย ในการ cache html output ที่ถูก gen ไว้แล้ว สำหรับหน้าที่มี output ซ้ำๆ กัน จะทำให้ได้ความเร็วพอๆ กันเลย ต่างกันนิดเดียว แต่คุ้มค่ามากเพราะ บริหารจัดการกับข้อมูล (data) ได้ง่ายกว่า


อันนี้กระจ่างเลย ทำไมผมอธิบายแบบนี้ไม่ได้  :wanwan031:
รับทำระบบ Streaming Server อยากได้เว็บสตรีมมิ่งหล่อๆ ติดต่อ PM ครับ

hotth

อ้างถึงจาก: amazegu ใน 24 กุมภาพันธ์ 2013, 23:22:35
สมมติผมจะสร้างหน้าเว็บสัก1000หน้า สมมติว่าข้อมูลเหมือนกัน
html จะประมวลผลเร็วกว่าถูกต้องหรือเปล่าครับ แต่จะช้าตอนเขียนเพราะเราต้องสร้างไฟล์ทั้ง 1000 หน้า
ในขณะที่phpอาจจเขียนเพียงแค่ไฟล์เดียวแต่ใช้ query string เอา

ขอบคุณครับ :wanwan017: :wanwan017: :wanwan017:
html เร็วกว่า เนื้อหาโดนเก็บจากพี่ google เยอะกว่า ไวกว่า แต่เขียนช้ากว่า php เยอะ

gubaaball

อ้างถึงจาก: newton ใน 25 กุมภาพันธ์ 2013, 00:36:30
อ้างถึงจาก: tdelphi ใน 25 กุมภาพันธ์ 2013, 00:30:15
ผมตอบให้เอง ไม่ต้องเถียงกัน

html เป็น output สุดท้าย ที่ browser ต้องนำมา rendor หน้าจอ เพื่อสร้าง Graphic User Interface ตามคำสั่งในภาษา html    แบบนี้เราเรียกว่า static web page หรือ static html

php เป็นภาษาเขียนโปรแกรมแบบ interpreter คือ ต้อง compile (แปลภาษา) ทุกครั้งเมื่อเรียกให้ทำงาน และ gen html output ออกมา เพื่อส่งให้ browser นำไปประมวลผลต่อ  แบบนี้เราเรียกว่า dynamic web page หรือ dynamic html


ซึ่งถ้าเทียบกันแบบตัวต่อตัว  เช่น index.html กับ index.php
ตัว index.html ย่อมอ่านและส่งข้อมูลได้เร็วกว่า เพราะ ไม่ต้องประมวลผลใดๆ เนื่องจาก เป็น html output อยู่แล้ว webserver จะอ่านไฟล์ แล้วส่งกลับไปได้เลย

แต่ข้อเสียของ static html ก็มี เช่น ไม่สามารถเชื่อมต่อฐานข้อมูลได้ หรือ ประมวลผลซับซ้อนได้
จึงเป็นที่มาของการออกแบบ CGI (common gateway interface) ในสมัยแรกๆ (perl,c++) และพัฒนามาเป็น webserver modules (mod) ในภายหลัง เช่น php ที่เราใช้กันในปัจจุบัน (แต่ก็ยังมีเป็นรูปแบบอื่นๆ อีกเช่น fast-cgi  เป็นต้น)

ถามว่า ถ้าอยากจะให้ php เร็วใกล้เคียงกับ html ทำได้ไหม

ขอตอบว่า ทำได้นะครับ และไม่ยากด้วย

คือ การใช้ caching มาช่วย ในการ cache html output ที่ถูก gen ไว้แล้ว สำหรับหน้าที่มี output ซ้ำๆ กัน จะทำให้ได้ความเร็วพอๆ กันเลย ต่างกันนิดเดียว แต่คุ้มค่ามากเพราะ บริหารจัดการกับข้อมูล (data) ได้ง่ายกว่า


อันนี้กระจ่างเลย ทำไมผมอธิบายแบบนี้ไม่ได้  :wanwan031:

ขอบคุณครับ กระจ่างมาก ^^

amazegu

ขอบคุณทุกท่านที่เข้าช่วยตอบคำถามครับ
หระจ่างเลย รวมถึงแอดมินที่ให่คำตอบชัดเจนมากครับ

MapTwoZa

มาเสริมให้

php ช้ากว่า html ไม่เท่าไหร่หรอกครับ แทบไม่เห็นความแตกต่างหรอก

ถ้าจะบอกว่า เห้ย php มันต้องประมวลผลก่อน ค่อยส่งเป็น output ออกไปนะ
ลองคิดดูว่าถ้า รายละเอียด output ที่เหมือนกัน php มันจะประมวลผลซับซ้อนแค่ไหนกันเชียว
ไอส่วนที่ทำให้ช้ามันคือ I/O อย่างเดียวแหละ เช่น พวก query หนักๆ เป็นต้น

แล้วถ้าสมมติจะแตก php 1 file เป็น html 1000 ไฟล์ เช่น product.php?id=xx กับ product001.html-product999.html
วิธีนี้ โยนทิ้งไปได้เลยครับ เพราะมันเสียเรื่อง scalability + maintenance ไปแล้ว product เยอะขนาดนั้น มันไม่ตอบโจทย์หรอกครับ แถมไปผิดทางด้วย ใช้ php cache + db memory engine ไวกว่าบรื๋อ

ถ้า care เรื่อง performace ก็ไปใช้ bytecode ครับ เฃ่น apc cache
เคยอ่านเจอประโยคนึงเกี่ยวกับ php เค้าบอกไว้ประมาณนี้
If you do care about performance. you have to use byte code.
If you don't use byte code. you don't care about performance.

Good code quality Developer :D

nuvatchai

มันขึ้นอยู่กับ server หรือ resource ที่คุณมี จะ 1000 หรือ 1000000 มันก็ไม่ต่างกัน ถ้าเป็นผม ผมจะใช้ php

supachet2526

html เร็วกว่าเพราะไม่ต้อง มีการประมวลผล แต่จริงๆก็ไม่เห็นความแตกต่างครับ ถ้าเขียนดีๆๆ
[direct=https://www.webunique.in.th]รับเขียนเว็บไซต์ [/direct]
[direct=https://www.webunique.in.th]บริษัทรับออกแบบเว็บไซต์ [/direct]

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

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

amazegu

ขอบคุณทุกท่านอีกที ได้คสามรู้เพิ่มขึ้นเป็นกองเลยครับ

normalblue

อ้างถึงจาก: tdelphi ใน 25 กุมภาพันธ์ 2013, 00:30:15
ผมตอบให้เอง ไม่ต้องเถียงกัน

html เป็น output สุดท้าย ที่ browser ต้องนำมา rendor หน้าจอ เพื่อสร้าง Graphic User Interface ตามคำสั่งในภาษา html    แบบนี้เราเรียกว่า static web page หรือ static html

php เป็นภาษาเขียนโปรแกรมแบบ interpreter คือ ต้อง compile (แปลภาษา) ทุกครั้งเมื่อเรียกให้ทำงาน และ gen html output ออกมา เพื่อส่งให้ browser นำไปประมวลผลต่อ  แบบนี้เราเรียกว่า dynamic web page หรือ dynamic html


ซึ่งถ้าเทียบกันแบบตัวต่อตัว  เช่น index.html กับ index.php
ตัว index.html ย่อมอ่านและส่งข้อมูลได้เร็วกว่า เพราะ ไม่ต้องประมวลผลใดๆ เนื่องจาก เป็น html output อยู่แล้ว webserver จะอ่านไฟล์ แล้วส่งกลับไปได้เลย

แต่ข้อเสียของ static html ก็มี เช่น ไม่สามารถเชื่อมต่อฐานข้อมูลได้ หรือ ประมวลผลซับซ้อนได้
จึงเป็นที่มาของการออกแบบ CGI (common gateway interface) ในสมัยแรกๆ (perl,c++) และพัฒนามาเป็น webserver modules (mod) ในภายหลัง เช่น php ที่เราใช้กันในปัจจุบัน (แต่ก็ยังมีเป็นรูปแบบอื่นๆ อีกเช่น fast-cgi  เป็นต้น)

ถามว่า ถ้าอยากจะให้ php เร็วใกล้เคียงกับ html ทำได้ไหม

ขอตอบว่า ทำได้นะครับ และไม่ยากด้วย

คือ การใช้ caching มาช่วย ในการ cache html output ที่ถูก gen ไว้แล้ว สำหรับหน้าที่มี output ซ้ำๆ กัน จะทำให้ได้ความเร็วพอๆ กันเลย ต่างกันนิดเดียว แต่คุ้มค่ามากเพราะ บริหารจัดการกับข้อมูล (data) ได้ง่ายกว่า


เสริมนิดนึงครับ ผมว่า PHP ที่เราใช้อยู่แทบจะ 99.9 % ใช้แค่ Interpreter นะครับ ไม่ใช่ Programming ชนิด Compile คือมันอ่านกันชนิดบรรทัดต่อบรรทัด
ส่วนที่เป็นชนิด Compiler คือตัวที่เราติดตั้งให้ทำงานร่วมกับ Apache หรือ PHP Engine

ขออธิบายในเชิงสถาปัตยกรรมของ Application นะครับ หากตัดส่วนฐานข้อมูลออก สิ่งที่ทำงานกับเราคือ 2 ตัว Apache และ PHP Engine

Apache นี่ทำงานในส่วนของ Presentation Tier ทำการจัดการ HTML เพื่อนำเสนอไปยัง Browser ในภาษาที่ Browser เข้าใจ แล้วก็ดูแลในส่วนของ Request ต่างๆ ที่เข้ามายัง Server ซึ่งหลักๆ ก็คือ HTTP Request จาก browser
PHP Engine นี่ทำงานในส่วนของ Business Logic ทำการ Interpret เอกสาร PHP เป็น HTML แล้วส่งไปยัง Presentation Tier

เรามาดูกันในชั้น OSI Layer ที่ต่ำกว่า Application Layer กับ App Achitecture ดีกว่าครับ ว่ามันเกิดอะไรขึ้นตามสภาพการณ์นั้น หากพิจารณาความเร็วที่ว่าในเชิงของระยะเวลาทั้งหมดตั้งแต่ Request ไปกระทั่ว receive ฉะนั้น OSI Layer ใช้เวลาเท่ากัน ตัดเข้ามาที่ Apache และ PHP เลย

Access Disk
กรณี HTML 1 kB/file บน Server ไฮโซมี SSD 1000 ไฟล์ กรณีดีสุดใช้ Seek Time + Data Transfer Time = 0.1ms+1000(1/300) ms = 3.4 ms (Data Transfer Rate = 300 kB/ms = 300 MB/s)
กรณี PHP 1kB/file บน Server เดียวกันที่ใช้ Loop วนสร้าง HTML code มีการ Access ฮาร์ดดิสค์ 1 ครั้งและ Transfer 1 ไฟล์ = 0.1ms +1(1/300 ) ms = 0.1 ms

Access Memory
กรณี HTML ความเร็ว Data Transfer ของ RAM = 6400 MB/s = 6.4 MB/ms ฉะนั้นไฟล์ขนาดนั้น ไม่มีผลต่อแรม เพราะไวกว่า Harddisk มากกว่า 20 เท่าอย่างน้อย ฉะนั้นเวลารวมที่ส่งทุกอย่างไปยัง HTTP Response คือ 3.4 ms
กรณี PHP Engine มี Data Transfer Rate เดียวกัน ต้องส่งให้ CPU ประมวณและ Gen HTML ขนาด 1000 kB ~ 1 MB สมมติ Engine Idle อยู่บน Memory มันต้อง Handle ข้อมูลปริมาณ worse case 5 เท่าของขนาดข้อมูลคือ 5 MB ใช้เวลา 0.8 ms สิริเวลารวมคือ 0.8+0.1 ms = 0.9 ms สำหรับส่งข้อมูลไปยัง HTTP Response แต่จริงๆ แล้วถึง Environment จะเกิดบริบทอื่นๆ อีกก็จะเห็นได้ว่าในกรณี PHP ยังเร็วกว่าถึง 3 เท่ากว่าๆ ไม่ต้องนับเวลา Write DATA เพราะทำงานคนละส่วน

ส่วนกรณี Query ขึ้นมา ผมไม่แน่ใจว่าหมายถึงอะไร จากฐานข้อมูลหรือเปล่า ถ้าแบบนั้นคงต้องไปสร้าง Socket ติดต่อกับฐานข้อมูลโดยตรงแล้วหละครับเพราะ HTML ทำไม่ได้