ประสิทธิภาพของภาษาการเขียนโปรแกรมช้าลงหรือไม่ [ปิด]


18

นี่คือวิธีที่ฉันเห็น

มีรหัสเครื่องและทุกอย่างที่คอมพิวเตอร์ต้องการเพื่อใช้งานบางอย่าง คอมพิวเตอร์ไม่สนใจภาษาการเขียนโปรแกรม ไม่สำคัญว่ารหัสเครื่องมาจาก Perl, Python หรือ PHP ภาษาการเขียนโปรแกรมไม่ได้ให้บริการคอมพิวเตอร์ พวกเขาให้บริการโปรแกรมเมอร์

ภาษาการเขียนโปรแกรมบางภาษาทำงานช้ากว่าภาษาอื่น แต่ก็ไม่จำเป็นเพราะมีบางอย่างผิดปกติ ในหลายกรณีมันเป็นเพราะพวกเขาทำสิ่งต่าง ๆ ที่โปรแกรมเมอร์จะต้องทำ (เช่นการจัดการหน่วยความจำ) และการทำสิ่งเหล่านี้พวกเขาดีกว่าในสิ่งที่พวกเขาควรจะทำ - ให้บริการโปรแกรมเมอร์

ดังนั้นประสิทธิภาพการทำงานที่ช้าลงของภาษาการเขียนโปรแกรมจริงๆเป็นสิ่งที่ไม่ดี?


22
ช้าลงในทางใด? เวลารวบรวม, รันไทม์, เวลาเขียน, ตัวชี้วัดอื่น ๆ ?
Matt Ellen

1
ฉันจะชี้ให้เห็นว่าคอมพิวเตอร์ที่เร็วและคอมไพเลอร์ที่สร้างภาษาของเครื่องจักรที่มีประสิทธิภาพนั้นดีมากยกเว้นว่าพวกมันทำให้โปรแกรมเมอร์ขี้เกียจมากขึ้น เมื่อผลิตภัณฑ์มีปัญหาด้านประสิทธิภาพมักเกิดจากการสันนิษฐานว่าบางสิ่งเป็น "เร็ว" เช่นการจัดการหน่วยความจำและการแจ้งเตือน
Mike Dunlavey

5
@ ไมค์: อีกทางหนึ่งโปรแกรมทำงานช้าเพราะเจฟฟ์สรุปรวมไว้ในบล็อกของเขาได้ดีเมื่อเร็ว ๆ นี้: "อัลกอริทึมสำหรับคนที่ไม่รู้วิธีซื้อแรม" หากโปรแกรมทำงานในเวลาลูกบาศก์แทนที่จะเป็นเวลา O (N log n) กำลังของคอมพิวเตอร์จะไม่เป็นปัญหาใหญ่
David Thornley

2
@ David: เราไม่สามารถรับ RAM ได้มากกว่า 512Gb ในเซิร์ฟเวอร์ของเราดังนั้นเราต้องเขียนอัลกอริธึมที่ดีกว่าตอนนี้
JBRWilkinson

2
ขึ้นอยู่กับตำแหน่งของคอขวด หากโปรแกรมรอ I / O 99.9% ของเวลามันไม่สำคัญว่าตัวโปรแกรมเองจะช้ากว่าโปรแกรมที่เขียนด้วยแอสเซมเบลอร์ถึง 10 เท่า

คำตอบ:


50

ฉันไม่คิดว่ามันจะไม่ดีโดยอัตโนมัติ Python ช้ากว่า C ++ แต่เมื่อทั้งคู่เร็วพอ Python อาจเป็นตัวเลือกที่ดีที่สุดสำหรับปัญหาที่เกิดขึ้นแม้ว่าจะช้ากว่าก็ตาม

มันเป็นการแลกเปลี่ยนกันเสมอ สำหรับงานที่มีขนาดเล็กเพียงครั้งเดียวมันเร็วกว่ามากในการเขียนสคริปต์ Python กว่าแอป C ++ ที่ทำเช่นเดียวกัน (ตัวอย่างทั่วไปสำหรับฉันคือการประมวลผลข้อความแบบแบทช์หรือการเดินแผนผังไดเรกทอรีและทำบางสิ่งบางอย่างกับไฟล์) และฉันไม่สนใจจริง ๆ ว่าจะใช้เวลา 10 ms หรือ 1,000 ms ถึงแม้ว่ามันจะช้ากว่า 100x เพราะมันอาจใช้เวลาครึ่งหนึ่งในการเขียนและทดสอบ

แน่นอนว่ามันจะดีถ้า Python เร็วเท่ากับ C ++ ดังนั้นในแง่นั้นฉันเห็นด้วยกับข้อความของคุณว่า "slow = bad" แต่จากนั้นฉันก็มีภาษาที่ทรงพลังที่ทำงานได้เร็วเท่าที่ฉันต้องการโดยไม่ทำอะไรบางอย่าง (เช่นการตรวจสอบขอบเขตของอาร์เรย์อาเรย์) ตราบเท่าที่มันช่วยให้ฉันตัดสินใจได้ว่าจะทำการแลกเปลี่ยนเมื่อไร (พูดโดยใช้ std: : เวกเตอร์)


ฉันไม่ได้ระบุว่า "ช้า = ไม่ดี" อย่างไรก็ตามขอขอบคุณที่แบ่งปันความคิดของคุณ
Emanuil Rusev

9
+1 'เร็วพอ' ช้าไม่ดีเมื่อมีการใช้งาน 'ช้าเกินไป / ไม่เร็วพอ' เวลาอื่น ๆ มันไม่สำคัญ
Kirk Broadhurst

4
+1 'เร็วพอ' ขึ้นอยู่กับสิ่งที่คุณทำเวลาของโปรแกรมเมอร์อาจมีค่ามากกว่าการประหยัดที่อาจเกิดขึ้นในเวลาดำเนินการ
Jonas

3
@ โจนัส: มันแทบจะไม่เคยเกิดขึ้นมันเป็นเพียงการที่คุณเห็นเงินเดือนโปรแกรมเมอร์ คุณไม่เห็นผู้ใช้แขวนหัวของพวกเขาด้วยความหงุดหงิดเมื่อแอพรวบรวมข้อมูลพร้อมตะโกนว่า "มาเลยยากแค่ไหน หากพวกเขาเผยแพร่ TCO ของซอฟต์แวร์ช้า v ซอฟต์แวร์เร็ว - คุณจะเห็นลำดับความสำคัญของคุณเปลี่ยนยอดขายทันที
gbjbaanb

1
@mcmcc: ฉันไม่ได้พูดถึงภาษาที่นั่น แต่เกี่ยวกับประสบการณ์ของผู้ใช้ เมื่อคุณคลิกที่ปุ่มสิ่งที่จะต้องเกิดขึ้นทันที เมื่อคุณเริ่มการคำนวณมันจะดีถ้าใช้เวลาสักครู่ตราบใดที่มีตัวบ่งชี้ความคืบหน้าที่มีประโยชน์
Jonas

18

ค่อนข้างง่าย - การเป็นคนช้าเป็นเรื่องเลวร้าย

เมื่อโปรแกรมต้องการระดับประสิทธิภาพที่แน่นอน

เพราะหากไม่มีประสิทธิภาพนั้นคุณจะไม่สามารถปฏิบัติตามข้อกำหนดได้

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


2
.. และบ่อยครั้งที่ความต้องการไม่ได้รับการเขียนในรูปแบบ "เกิน X วินาทีในการดึงหน้าเว็บทำให้ผู้ใช้เว็บไซต์โดยเฉลี่ยย้ายไปยังเว็บไซต์อื่นแทน" วิธี
JBRWilkinson

1
@JBRWilkinson ใช่หรือหากระบบช้าเกินไปความต้องการประสิทธิภาพการทำงานใหม่ก็จะปรากฏขึ้นทันที)
Kirk Broadhurst

12

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

สิ่งหนึ่งที่คอมพิวเตอร์กำลังทำอยู่ก็คือมันรวดเร็ว จริงๆ! สนับมือที่มีตู้เก็บเอกสารสามารถทำงานเหมือนกับฐานข้อมูลได้ คนที่แต่งตัวประหลาดบางคนหมุนเครื่องพิมพ์สามารถทำสิ่งที่ Apache ทำ อย่างจริงจัง! และพวกเขาก็ทำกันมาหลายร้อยปี เหตุใดคอมพิวเตอร์จึงดีสำหรับสิ่งใดคือความเร็ว

ดังนั้นภาษาการเขียนโปรแกรมที่ (เมื่อเทียบกับภาษาอื่น ๆ ) ไม่สามารถใช้ประโยชน์จากสิ่งที่ขาดหายไปได้เปรียบเพียงอย่างเดียวของการใช้คอมพิวเตอร์


13
คุณหายไปหนึ่งบิตที่สำคัญ: คอมพิวเตอร์โง่รวดเร็วและคาดเดาได้ในขณะที่ erratum humanum est และในหลาย ๆ กรณีการคาดการณ์นี้มีความสำคัญมากกว่าความเร็วที่แท้จริง
SK-logic

5
ภาษาการเขียนโปรแกรมใด ๆ ใช้ความเร็วคอมพิวเตอร์ Python ในคอมพิวเตอร์ OLPC รุ่นใดรุ่นหนึ่งทำสิ่งต่าง ๆ ได้เร็วกว่าที่ฉันทำได้ด้วยมือ โปรดจำไว้ว่าแล็ปท็อปปัจจุบันของฉัน (ซื้อเมื่อสองปีก่อนและไม่ติดอันดับ) เป็นประมาณหนึ่งแสนถึงหนึ่งล้านเท่าของพลังคอมพิวเตอร์มากกว่าคอมพิวเตอร์ที่บ้านเครื่องแรกของฉัน
David Thornley

4
ไม่ต้องพูดถึงว่าคอมพิวเตอร์ใช้พลังงานจำนวนมากในการใช้งาน (โดยเฉพาะเซิร์ฟเวอร์) และมีความกังวลเกี่ยวกับการใช้พลังงาน (เทคโนโลยีสีเขียว) และโดยปกติโปรแกรมที่เร็วกว่าจะทำงานได้มากกว่าโดยใช้พลังงานในปริมาณที่เท่ากัน โปรแกรมที่ช้าลงจึงนับได้ (โดยเฉพาะบนเซิร์ฟเวอร์ที่ใช้งานมาก)
Coyote21

4
@ การคาดการณ์ทางคอมพิวเตอร์ SK-logic นั้นเกินความคาดหมาย ดังที่โจเซฟไวเซ็นบาวน์ชี้ให้เห็นเป็นอย่างดีระบบขนาดใหญ่มีแนวโน้มที่จะซับซ้อนจนไม่สามารถคาดเดาได้และไม่มีใครสามารถคาดการณ์ผลลัพธ์ของการกระทำบางอย่างได้ มันกลายเป็นเรื่องของศรัทธาหรือความหวัง คุณไม่สามารถพิสูจน์ได้อย่างเป็นทางการว่าโปรแกรมจะทำสิ่งที่คุณตั้งใจไว้เสมอ (ดังนั้นจึงไม่สามารถคาดเดาได้)
โอมาร์โคห์ล

2
แต่ถ้าความเร็ว (ของการดำเนินการ) เป็นเป้าหมายสูงสุดทำไมเราไม่เขียนโปรแกรมของเราในรหัสเครื่อง?
Emanuil Rusev

5

ภาษาการเขียนโปรแกรมอาจอยู่ในระดับสูงมาก "ทำมาก" ยังคงเร็วมาก OCaml เป็นภาษาระดับสูงกว่า PHP แต่มันก็สร้างโค้ดขึ้นมาเกือบจะเร็วเท่ากับ C. Javascript นั้นเป็นแบบไดนามิกเหมือนกับ PHP แต่มันสามารถทำงานได้อย่างรวดเร็วจริงๆ ดังนั้นจึงเป็นปัญหาหลักในการใช้งานภาษาไม่ใช่การออกแบบ ภาษาแบบไดนามิกนั้นยากที่จะนำไปใช้อย่างมีประสิทธิภาพ แต่เป็นไปไม่ได้


คุณคิดว่าภาษาที่ถือว่าช้า (ในแง่ของการทำงาน) เช่น PHP สามารถนำไปใช้เพื่อให้ทำงานได้เร็วขึ้นหรือไม่?
Emanuil Rusev

1
เครื่องมือเพิ่มประสิทธิภาพ Zend ทุกคน?
281377

ให้ฉันถามอีกวิธีนี้ - การใช้ PHP ทำให้ช้าลงอย่างไร
Emanuil Rusev

6
ใช่มันสามารถใช้งานได้ดีขึ้น มันจะต้องใช้ความพยายามอย่างมาก - การตีความเชิงนามธรรมให้กับประเภทไดนามิกที่เชี่ยวชาญเป็นสิ่งที่ค่อนข้างยุ่งยากและยังไม่ได้ทำการวิจัยที่ดี ภาษาแบบคงที่นั้นง่ายต่อการแปลเป็นรหัสที่มีประสิทธิภาพสูง ดังนั้น PHP จึงช้าเพราะมันเป็นแบบไดนามิก และที่จริงแล้วมันมีการนำไปใช้ที่ไม่ดีและไม่เป็นมืออาชีพรวมถึงภาษาสคริปต์อื่น ๆ อีกมากมาย
SK-logic

คอมไพเลอร์ HipHop เริ่มต้นโดย Facebook สามารถแปล PHP เป็นรหัส C ++ ดังนั้นมันจึงเร็วจริงๆ
JBRWilkinson

3

สามารถวัดความเร็วได้ในแง่ของระยะเวลาเวลาการพัฒนาเริ่มต้นและเวลาการบำรุงรักษา (เวลาที่ใช้ในการแก้ไขปัญหา / ข้อบกพร่องและสร้างรหัสใหม่และปรับใช้)

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

ดังนั้นความสมดุลจึงขึ้นอยู่กับความเร็วที่คุณต้องการ

บริบทก็มีความสำคัญเช่นกัน การโหลดการกำหนดค่าเริ่มต้นของคุณโดยใช้ 0.5 วินาทีแทน 0.1 วินาทีนั้นไม่ใช่เรื่องใหญ่ แต่ที่รันไทม์การใช้ 0.5 วินาทีในการทำแบบสอบถามแทน 0.1 วินาทีอาจเป็นเรื่องใหญ่หากต้องจัดการกับ 100 ข้อความค้นหาดังนั้นจึงใช้เวลา 50 วินาทีแทน 10


100ms มีประสิทธิภาพในการรับรู้ของผู้ใช้ทันที 500ms ค่อนข้างชัดเจน หากผู้ใช้กำลังดำเนินการค้นหานั่นคือความแตกต่างที่เห็นได้ชัดเจนในเวิร์กโฟลว์
David Thornley

3

เรียบง่าย - ลูกค้ารักซอฟต์แวร์ที่รวดเร็ว ในความเป็นจริงจุดประสงค์ทั้งหมดของคอมพิวเตอร์คือการคำนวณอย่างรวดเร็ว


11
ผิดจริง ลูกค้ารักซอฟต์แวร์ที่ทำงานตามข้อกำหนดและอยู่ในงบประมาณ พวกเขาไม่สนหรอกถ้าหน้าจอใช้เวลา 19 มิลลิวินาทีในการสร้างมากกว่า 15 เพราะพวกเขาไม่เคยสังเกตเห็น (ถ้าใช้เวลา 15 วินาทีในการสร้างนั่นเป็นอย่างอื่น) พวกเขายังไม่สนใจว่าคุณจะใช้ "ภาษาที่รวดเร็ว" หรือไม่พวกเขาต้องการสิ่งที่มีประสิทธิภาพตามข้อกำหนดและภายในงบประมาณ
jwenting

4
19 มิลลิเซคอนกับ 15 มิลลิวินาทีอาจไม่ได้สร้างความแตกต่าง แต่ 500ms เทียบกับ 300ms ที่กำหนดไว้และมันอาจสร้างความแตกต่างระหว่างผลิตภัณฑ์ที่ประสบความสำเร็จและความล้มเหลว
Nemanja Trifunovic

2
+1 "ลูกค้าชื่นชอบซอฟต์แวร์ที่ทำงานได้ตามข้อกำหนดและอยู่ในงบประมาณ" ในทางกลับกันผู้ใช้ปลายทางบางรายที่ไม่ได้ชำระเงินโดยตรงกับซอฟต์แวร์เช่นพนักงานของ บริษัท ขนาดใหญ่ไม่สนใจค่าใช้จ่ายในการพัฒนา แน่นอนว่าในฐานะผู้จำหน่ายซอฟต์แวร์งานที่สำคัญที่สุดของคุณคือทำให้คนเหล่านั้นมีความสุขและจ่ายเงินให้คุณจริง
Zsolt Török

@Zsolt: ขึ้นอยู่กับประเภทของซอฟต์แวร์ที่คุณกำลังพัฒนา ฉันมักจะทำงานกับผลิตภัณฑ์ที่ผู้ใช้ปลายทางจ่ายสำหรับผลิตภัณฑ์โดยตรงหรือมีอิทธิพลต่อการตัดสินใจซื้อ - พวกเขาไม่ได้ให้ข้อมูลจำเพาะแก่เราและไม่สนใจงบประมาณของเรา บางทีฉันควรใช้คำว่า "ผู้ใช้" มากกว่า "ลูกค้า"
Nemanja Trifunovic

4
การพูดในฐานะผู้ใช้ (แทนที่จะเป็นผู้พัฒนา) ฉันสามารถพูดการตอบสนองทั่วไป (หมายเหตุ: แตกต่างจากความเร็ว) เป็นปัจจัยสำคัญในการตัดสินใจของฉันในการเลือกโปรแกรมหนึ่งมากกว่าโปรแกรมอื่น นี่คือเหตุผลหนึ่งที่ฉันใช้แอปพลิเคชัน Java บางตัวเช่น; เวลาเริ่มต้นของ JVM เพียงอย่างเดียวนั้นส่งผลให้แอปที่เริ่มต้นด้วย -5000 คะแนนในพื้นที่นี้;) แม้ว่าการตอบสนองอย่างจริงจังจะทำให้ความแตกต่างระหว่าง UI ผลิตภัณฑ์ของคุณเป็น clunky หรือมีประสิทธิภาพและบางครั้งอาจเป็นเรื่องยากที่จะบรรลุหากภาษาที่คุณใช้ทำให้เกิด stutters หรือดิสก์ i / o ยาวรออยู่
Billy ONeal

3

ช้าเป็นญาติ หากฉันมีความต้องการที่จะอ่านพอร์ต 10 ครั้งต่อวินาทีภาษาที่ไม่สามารถสร้างไบนารีที่สามารถทำนั้นช้าเกินไป หาก otoh ฉันกำลังเขียนเว็บแอปพลิเคชันที่ลำดับคำขอ / การตอบสนองระหว่างเซิร์ฟเวอร์และเบราว์เซอร์ / ไคลเอ็นต์วัดเป็นวินาทีและผู้ใช้น่าจะใช้เวลาเป็นนาทีบนหน้าจอก่อนคลิกปุ่มภาษาการเขียนโปรแกรมที่สามารถจัดการการประมวลผลคำขอ ใน 1 วินาทีอาจเร็วพอ (แน่นอนว่าส่วนใหญ่เร็วกว่ามาก)

แน่นอนภาษาการเขียนโปรแกรมอาจเป็นปัจจัยในการกำหนดความเร็วของการดำเนินการ แต่นั่นจะไม่เป็นภาษานั้นเอง แต่เป็นคอมไพเลอร์และ / หรือรันไทม์ที่มาพร้อมกับมัน สิ่งนี้เห็นได้อย่างชัดเจนว่าการพัฒนา Java ซึ่งประสิทธิภาพของ JVMs (แม้ในสภาพแวดล้อมฮาร์ดแวร์ที่เหมือนกัน) นั้นเพิ่มขึ้นอย่างมากในช่วงหลายปีที่ผ่านมา และแน่นอนว่ามันเป็นไปได้เสมอที่จะเขียนโค้ดช้ามากในทุกสภาพแวดล้อมที่คุณเลือก เช่นการอ้างสิทธิ์เช่น "C ++ เร็วกว่า Java สิบเท่า" จะเป็นการปลอมโดยอัตโนมัติเว้นแต่จะผ่านการรับรองและตรวจสอบปริมาณว่าเงื่อนไขใดถูกทดสอบและอย่างไร เป็นไปได้เท่า ๆ กันในการสร้างการทดสอบที่ Java เร็วกว่า C ++ ทุกอย่างขึ้นอยู่กับสิ่งที่คุณใช้เป็นรหัสทดสอบและวิธีการใช้งาน


3

เนื่องจากภาษาการเขียนโปรแกรมไม่มีให้บริการโปรแกรมเมอร์จึงมีอยู่เพื่อสร้างโปรแกรมเพื่อให้บริการผู้ใช้

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

ฉันเป็นส่วนหนึ่งของทีมที่เขียนซอฟต์แวร์ควบคุมสำหรับสื่อออกอากาศ มีโอกาสที่ดีที่ทีวีหรือสถานีวิทยุที่คุณชื่นชอบจะทำงานหากคุณอยู่ในสหรัฐอเมริกา ประสิทธิภาพเป็นหนึ่งในสิ่งที่เราได้ยินบ่อยที่สุดจากลูกค้า เดิมทีมันถูกเขียนขึ้นสำหรับการทำงานของสถานีเดี่ยวเล็ก ๆ น้อย ๆ แต่ตอนนี้เรากำลังเซ็นสัญญากับเครือข่ายการออกอากาศและเคเบิลที่สำคัญซึ่งมีช่องหลายร้อยช่องและขนาดเริ่มเป็นปัญหา หากเราไม่สามารถทำสิ่งต่าง ๆ ได้อย่างรวดเร็วสำหรับพวกเขาพวกเขาจะนำสัญญามูลค่าหลายล้านดอลลาร์ไปมอบให้กับผู้ที่สามารถทำได้และท้ายที่สุดก็ออกจากงาน นั่นเป็นเหตุผลที่เราใช้ภาษาที่รวดเร็วรวบรวมและเพิ่มประสิทธิภาพ heck จากฐานข้อมูลของเรา


3

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

สำหรับซอฟต์แวร์ที่ยั่งยืนที่ผู้คนใช้เรามักต้องการให้เร็วที่สุดเท่าที่จะเป็นไปได้ ที่แอสเซมบลีระดับเวลาสู่ตลาดเพิ่มขึ้นมากจนไม่ทำกำไร มันคือการแลกเปลี่ยนทั้งหมด จากมุมมองทางธุรกิจมันอาจจะมีกำไรมากกว่าที่จะปล่อยให้โปรแกรมเมอร์ที่ไม่ดีทำการดีบักข้อผิดพลาดของหน่วยความจำใน C ++, ทำไปอีกหลายเดือนถ้ามันหมายความว่าผลิตภัณฑ์นั้นเร็วกว่าคู่แข่งของคุณ

ดังนั้นความเร็วจึงมีความสำคัญในซอฟต์แวร์หลาย ๆตัว ทุกวันนี้ภาษาที่ช้าถือว่าเป็น "ไม่ดี" เพราะพวกมันช้าเกินไปจริง ๆ (Python สามารถช้าลงได้ 50x - 100x และนั่นมากเกินไป)


2

ภาษาการเขียนโปรแกรมมีอยู่เพื่อให้บริการโปรแกรมเมอร์

ฉันไม่รู้ว่าคุณมาถึงข้อสรุปนี้อย่างไร ฉันจะพูดว่า: วิศวกรซอฟต์แวร์ใช้ภาษาการเขียนโปรแกรมสำหรับความต้องการของพวกเขา

ภาษาการเขียนโปรแกรมบางภาษาช้ากว่ากัน แต่ไม่ใช่เพราะมีบางอย่างผิดปกติ

นี่เป็นคำพูดที่ไม่สุภาพ กำหนดสิ่งที่คุณหมายถึงโดยใช้คำว่า 'ช้า' ที่นี่ ช้าลงอาจหมายถึง:

  1. โปรแกรมสุดท้ายที่ทำสิ่งเดียวกันได้ให้เรียกใช้ 'ช้าลง' ในภาษาหนึ่งเปรียบเทียบกับอีกภาษาหนึ่ง
  2. เวลาที่ใช้ในการสร้างโปรแกรมสุดท้ายอาจนานกว่านี้ (บางคนจะอธิบายว่า 'ช้ากว่า')

ทั้งสองประเด็นที่อยู่ในใจก็เชื่อมโยงกันซึ่งมีการแลกเปลี่ยนระหว่างเวลาที่ใช้ในการพัฒนาและประสิทธิภาพ


3
คุณพูดถูกว่า "วิศวกรซอฟต์แวร์ใช้ภาษาการเขียนโปรแกรมสำหรับความต้องการของพวกเขา" สิ่งนี้สนับสนุนเฉพาะข้อความที่ว่า "ภาษาการเขียนโปรแกรมมีอยู่เพื่อให้บริการโปรแกรมเมอร์"
Emanuil Rusev

1
ฉันจะบอกว่า: วิศวกรซอฟต์แวร์ใช้ภาษาการเขียนโปรแกรมเพื่อแก้ไขปัญหา (ซึ่งโดยปกติจะไม่ใช่ของตัวเอง แต่เป็นของลูกค้า)
PéterTörök

@Emanuil: ฉันจะไม่พูดว่า "ค้อนทำหน้าที่ซ่อมบำรุง / มนุษย์" แต่ใช้ค้อนเพื่อทำงานให้เสร็จ (เช่นตอกตะปูตีคนที่คุณไม่ชอบ ฯลฯ ) @ ปีเตอร์: ฉันสงสัยว่ามีกี่คนที่เขียน '@Peter' แต่ถ้าคุณสามารถใส่คำว่า 'ปัญหา' สำหรับทุกสิ่งได้ฉันคิดว่าข้อความของเรามีความหมายเหมือนกัน
JK

1

เช่นซอฟต์แวร์ใด ๆ การช้าอาจเป็นสัญญาณของปัญหาพื้นฐาน / การออกแบบที่ไม่ดี การออกแบบเป็นเรื่องของนักจิตวิญญาณที่ได้รับการยอมรับ แต่สิ่งนี้ไม่ได้เบี่ยงเบนความสนใจไปจากความจริงที่ว่าหลักการออกแบบที่ตอนนี้มีพื้นฐานมาจากล้าสมัยและถือว่า 'ไม่ดี'

ใช้ Classic ASP และ ASP.net เป็นตัวอย่าง


1

มีคนแสดงความคิดเห็นว่า "ลูกค้าชื่นชอบซอฟต์แวร์ที่ทำงานได้ตามข้อกำหนดและอยู่ในงบประมาณ" นี่เป็นเรื่องจริง - แต่มันค่อนข้างมีผลกับซอฟต์แวร์ที่ช้าและโดยความหมายเกือบหมายถึงภาษาโปรแกรมที่ช้ากว่า (และกรอบ) และอัลกอริทึมและการกำหนดค่า ภาษาโปรแกรมช้าอาจเป็นส่วนที่สำคัญที่สุดของทั้งหมดข้างต้นเพียงเพราะมันเป็นรากฐานที่คุณจะพบว่ามันยากที่จะเปลี่ยนแปลง หากคุณใช้ Oracle DB และต้องการความสมบูรณ์ยิ่งขึ้นคุณสามารถปรับตาราง / ดัชนี / ฯลฯ ให้เหมาะสมได้ ง่าย. หากคุณมีอัลกอริทึมที่ไม่ดีในรหัสของคุณคุณสามารถเขียนรหัสอื่นได้ หากเฟรมเวิร์กของคุณช้าคุณสามารถแทนที่ได้ - นั่นไม่ใช่เรื่องง่าย แต่มันสามารถทำได้โดยไม่ต้องเขียนใหม่ทุกอย่าง หากภาษาของคุณช้าเกินไปคุณต้องเริ่มต้นใหม่อีกครั้ง

ดู Facebook สำหรับความยุ่งยากที่พวกเขาทำเพื่อให้ PHP ทำงานได้เร็วพอเมื่อพวกเขาต้องการปรับขนาด

สำหรับส่วนที่เหลือของเรามักจะเขียนข้อกำหนดที่ไม่เกี่ยวกับประสิทธิภาพการทำงานลงในข้อกำหนดเฉพาะโดยเฉพาะอย่างยิ่งสำหรับเว็บแอปที่ปรับขนาดได้ ไม่สามารถตอบสนองหน้า 'จะต้องแสดงต่อผู้ใช้ภายใน 2 วินาทีของการร้องขอ "และคุณเสียสัญญา (หรือชำระค่าปรับ) ดังนั้นลูกค้าที่รักซอฟต์แวร์ที่ทำงานเพื่อตอบสนอง - และคำขอเหล่านั้นจะต้องรวดเร็ว (คุณอาจไม่สนใจว่าผู้ใช้ใช้จ้องนาฬิกาทรายนานแค่ไหน แต่ลูกค้ามั่นใจได้ว่ามันแพงมาก)

ตัวอย่างเช่นที่ call center ขนาดใหญ่ฉันได้รับแจ้งว่าพวกเขาต้องการทราบว่าในทุก ๆ วินาทีคุณสามารถบันทึกกระบวนการโทรออกได้ 1 calltaker อาจ 'ลดขนาด' ได้ นั่นคือเงินจริงในทันทีและเป็นแรงจูงใจอย่างมากสำหรับผู้บังคับบัญชาที่จะได้รับซอฟต์แวร์ที่เร็วขึ้นมีประสิทธิภาพและใช้งานได้มากกว่า

มีเวลามากที่ต้องกังวลเกี่ยวกับโปรแกรมเมอร์ที่เขียนโค้ดให้เร็วที่สุดเท่าที่จะเป็นไปได้ (จากนั้นทำการทดสอบหน่วยและปรับโครงสร้างใหม่ตลอดเวลาฮ่า ๆ ) ฉันพบว่านี่ไม่ใช่ปัจจัยมากเท่าที่คนคิดว่าเป็น - ถ้าคุณเป็นผู้เชี่ยวชาญในภาษาของคุณคุณสามารถเขียนโค้ดได้เร็วกว่าถ้าคุณไม่มีประสบการณ์ ดังนั้นผู้เชี่ยวชาญ C ++ dev สามารถเขียนรหัสได้เร็วขึ้นและแม่นยำยิ่งขึ้นกว่าผู้พัฒนา PHP มือใหม่ ดังนั้นฉันคิดว่าการเป็นผู้เชี่ยวชาญมีความสำคัญมากกว่าการเลือกภาษาที่ 'ง่าย' และนี่คือเหตุผลที่ฉันไม่ชอบลัทธิของ


1

ฉันจะชี้ให้เห็นว่าปัญหาด้านประสิทธิภาพส่วนใหญ่มีอยู่เพราะโปรแกรมเมอร์ทำงานได้ไม่ดีไม่ใช่เพราะภาษาช้าเกินไป จริงๆแล้วมีสิ่งที่เกี่ยวข้องอีกมากมายที่ต้องกังวลเกี่ยวกับประสิทธิภาพมากกว่าภาษาที่คุณเลือก นั่นจะอยู่ที่ประมาณ 1,203,407 รายการของฉัน


0

ดังนั้นประสิทธิภาพการทำงานที่ช้าลงของภาษาการเขียนโปรแกรมจริงๆเป็นสิ่งที่ไม่ดี?

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

แต่ไม่ใช่ทุกสิ่งอื่นเท่ากัน สำหรับผู้เริ่มต้นสิ่งสำคัญคือต้องสร้างผลลัพธ์ที่ถูกต้องหรืออย่างน้อยก็เพียงพอ (หากได้รับอนุญาตผลลัพธ์ที่ผิดอย่างสมบูรณ์คุณสามารถสร้างผลลัพธ์เหล่านั้นได้อย่างรวดเร็วแน่นอนและพวกเขาจะมีค่าเป็นศูนย์อย่างแน่นอนกับทุกคน) หากการเปลี่ยนภาษาค่อนข้างช้าลงจะทำให้มีโอกาสมากขึ้นที่ผลลัพธ์ที่ถูกต้อง การแลกเปลี่ยนที่ดี ภาษาระดับสูงมีข้อได้เปรียบเหนือภาษาระดับล่างที่นี่เนื่องจากชุดแบบจำลองที่สมบูรณ์ยิ่งขึ้นของพวกเขาทำให้การแสดงปัญหาที่ซับซ้อนได้ง่ายขึ้นโดยไม่ต้องมีรายละเอียดชัดเจนมากเกินไป

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

จุดสำคัญสุดท้ายที่ควรทราบคือไม่จำเป็นต้องใช้เพียงภาษาเดียวและระบบซอฟต์แวร์จำนวนมากมีส่วนประกอบส่วนใหญ่ที่ไม่ได้มีประสิทธิภาพที่สำคัญ การใช้ภาษาระดับต่ำในการผลิตส่วนประกอบที่มีประสิทธิภาพสูงสำหรับบิตที่สำคัญนั้นสมเหตุสมผลในขณะที่ปล่อยให้ชิ้นส่วนที่สำคัญน้อยลงเป็นภาษาระดับสูง (เพื่อลดต้นทุนในการผลิตชิ้นส่วนเหล่านี้) นั้นสมเหตุสมผล ยิ่งไปกว่านั้นคุณสมบัติที่ทำให้ภาษาระดับต่ำดี (ความสามารถในการควบคุมอย่างแม่นยำในสิ่งที่เครื่องทำ) ไม่ใช่คุณสมบัติที่สร้างภาษาระดับสูงที่ดี (ความสามารถในการอนุมานรายละเอียดจากคำอธิบายที่น้อยกว่ามาก): มีการต่อต้านแบบ diametrically ดังนั้นจึงสามารถจับคู่พวกเขาเข้าด้วยกันและใช้พวกเขาเพื่อจุดแข็งและหลีกเลี่ยงจุดอ่อนของพวกเขานั่นเป็นสิ่งที่ยอดเยี่ยมแน่นอน

ส่วนประกอบใดควรได้รับการบำบัดที่มีประสิทธิภาพสูง การเพิ่มประสิทธิภาพ? วัดพวกเขา โปรไฟล์พวกเขา ค้นหาความจริงมากกว่าที่จะคาดเดา มุ่งเน้นความพยายามของคุณในที่ที่ทำได้ดีที่สุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.