วิธีไหนเร็วที่สุด

  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.
  • warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 1005 is not allowed to access /tmp owned by uid 0 in /var/www/sites/sugree/codenone.com/subdomains/www/html/includes/file.inc on line 190.

ไปอ่านเจอใน mailing-list
เทียบกันระหว่าง string operation พวกนี้ (ได้ผลลัพท์เหมือนกัน)

c="stuff"
 
'a' + c + 'b'
 
"a" + c + "b"
 
"a#{c}b"
 
"a" << c << "b"

วิธีไหนน่าจะเร็วสุด

์note: เฉลยพรุ่งนี้ (สำหรับคนไม่มีเวลาทดลอง)

sugree's picture

"a" << c << "b"

ผมคิดว่าตัวนี้ ถ้าผมเข้าใจไม่ผิด << แปลว่า append

สงสัยอีกแล้ว ทำไมไม่มีตัวเลือกนี้

'a' << c << 'c'

               user     system      total        real
'a' +     2.906000   0.000000   2.906000 (  2.907000)
"a" +     2.891000   0.000000   2.891000 (  2.890000)
a#{       1.859000   0.000000   1.859000 (  1.860000)
"a" <<    2.344000   0.000000   2.344000 (  2.344000)

ผมเดาผิดนะ ตอนแรกผมคิดว่า "a#{c}b" น่าจะเป็นวิธีที่ช้าที่สุด

veer's picture

นี่ขนาดผมใช้วิธีที่เร็วที่สุดแล้ว (แบบไม่ได้ตั้งใจ) แต่โปรแกรมของผมก็ยังช้าอยู่ดี :-P

sugree's picture

ผิดเต็มๆ

taiko_gogo's picture

อ้า ตอบผิดด้วย
ผมกลับคิดว่า อันแรก
'a' + c + 'b'
เพราะเท่าที่ผมจำได้ เวลา ใช้ " มันต้องมีการ evaluate ค่าด้วย(มั้ง)
เลยคิดว่าอันแรกน่าจะเร็วสุด ดันกลายเป็นช้าสุดซะงั้น
ส่วนไอ้เจ้า #a ที่ตอนแรกน่าจะช้าสุด ดันเร็วสุด ทำไมกันหนอ

ผมเดาเป็น "a#{c}b" เพราะมันดูง่ายสุด (มันมี overhead น้อยสุดเวลารันในหัวผม) lol
ถูกเจ้ย..

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น