คำถามติดแท็ก performance

คำถามที่เกี่ยวข้องกับการปรับปรุงประสิทธิภาพของแอปพลิเคชันอาจมีตั้งแต่สถาปัตยกรรมซอฟต์แวร์ที่เลือกไปจนถึงการเลือกอัลกอริทึม

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

1
เหตุใด ES6 ดั้งเดิมจึงสัญญาว่าช้ากว่าและใช้หน่วยความจำมากกว่าบลูเบิร์ด
ในเกณฑ์มาตรฐานนี้ชุดใช้เวลานานขึ้น 4 เท่าในการดำเนินการกับสัญญา ES6 เมื่อเทียบกับสัญญา Bluebird และใช้หน่วยความจำ 3.6 เท่า ไลบรารี JavaScript จะเร็วและเบากว่าการใช้งานดั้งเดิมของ v8 ที่เขียนใน C ได้อย่างไร? สัญญาของ Bluebird นั้นมี API เดียวกันกับสัญญา ES6 ดั้งเดิม (รวมถึงวิธีการอรรถประโยชน์เพิ่มเติม) การใช้งานดั้งเดิมนั้นเขียนได้ไม่ดีหรือมีแง่มุมอื่น ๆ

30
การเพิ่มประสิทธิภาพไมโครเป็นสิ่งสำคัญเมื่อการเข้ารหัส?
ฉันเพิ่งถามคำถามเกี่ยวกับกองมากเกินที่จะหาเหตุผลว่าทำไมisset () ได้เร็วกว่า strlen ()ในPHP สิ่งนี้ทำให้เกิดคำถามเกี่ยวกับความสำคัญของโค้ดที่อ่านได้และการปรับปรุงประสิทธิภาพของไมโครวินาทีในโค้ดนั้นคุ้มค่าหรือไม่ พ่อของฉันเป็นโปรแกรมเมอร์ที่เกษียณอายุราชการและฉันแสดงให้เขาเห็นคำตอบ เขามั่นใจอย่างแน่นอนว่าหาก coder ไม่ได้พิจารณาประสิทธิภาพในรหัสของพวกเขาแม้ในระดับไมโครพวกเขาไม่ใช่โปรแกรมเมอร์ที่ดี ฉันไม่แน่ใจ - บางทีความสามารถในการคำนวณที่เพิ่มขึ้นหมายความว่าเราไม่ต้องพิจารณาการปรับปรุงประสิทธิภาพแบบไมโครเหล่านี้อีกต่อไป? บางทีการพิจารณาแบบนี้ขึ้นอยู่กับคนที่เขียนรหัสภาษาจริง ๆ ? (ของ PHP ในกรณีข้างต้น) ปัจจัยด้านสิ่งแวดล้อมอาจมีความสำคัญ - อินเทอร์เน็ตใช้พลังงาน 10% ของพลังงานโลก ฉันสงสัยว่าโค้ดไมโครวินาทีที่สิ้นเปลืองเพียงใดเมื่อทำซ้ำล้านล้านครั้งบนเว็บไซต์หลายล้านแห่ง ฉันต้องการที่จะรู้คำตอบโดยเฉพาะอย่างยิ่งจากข้อเท็จจริงเกี่ยวกับการเขียนโปรแกรม การเพิ่มประสิทธิภาพไมโครเป็นสิ่งสำคัญเมื่อการเข้ารหัส? สรุปส่วนตัวของฉัน 25 คำตอบขอบคุณทุกคน บางครั้งเราจำเป็นต้องกังวลเกี่ยวกับการเพิ่มประสิทธิภาพแบบไมโคร แต่ในสถานการณ์ที่หายากมากเท่านั้น ความน่าเชื่อถือและความสามารถในการอ่านมีความสำคัญมากกว่าในกรณีส่วนใหญ่ อย่างไรก็ตามการพิจารณาการเพิ่มประสิทธิภาพแบบไมโครเป็นครั้งคราวไม่ได้ทำให้เจ็บปวด ความเข้าใจพื้นฐานสามารถช่วยเราไม่ให้เลือกสิ่งที่ไม่ดีอย่างเห็นได้ชัดเมื่อเขียนโค้ดเช่น if (expensiveFunction() || counter < X) ควรจะเป็น if (counter < X || expensiveFunction()) ( ตัวอย่างจาก …

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

30
การให้นักพัฒนาซอฟต์แวร์ที่พัฒนาช้าลงส่งผลให้รหัสเร็วขึ้น / มีประสิทธิภาพมากขึ้นหรือไม่? [ปิด]
สมมติว่าฉันให้นักพัฒนาของฉันมีเครื่องที่รวดเร็ว VS2010 ที่ใช้ WPF โหลดเร็วมาก ผู้พัฒนาจึงสร้างแอปพลิเคชัน WPF หรือ WPF / e ที่ทำงานได้ดีบนกล่องของเขา แต่ช้าลงมากในโลกแห่งความเป็นจริง คำถามนี้มีสองส่วน ... 1) ถ้าฉันให้นักพัฒนาเครื่องช้าลงนั่นหมายความว่ารหัสผลลัพธ์อาจเร็วขึ้นหรือมีประสิทธิภาพมากขึ้น 2) ฉันสามารถทำอะไรได้บ้างเพื่อให้ผู้พัฒนาได้รับประสบการณ์ IDE ที่รวดเร็วในขณะที่ให้ประสบการณ์รันไทม์ 'ทั่วไป' ปรับปรุง: สำหรับบันทึกนี้ฉันกำลังเตรียมคำตอบที่ตรงกับการจัดการ นี่ไม่ใช่ความคิดของฉันและคุณก็ช่วยฉันแก้ไขคำขอที่ผิดของลูกค้าของฉัน ขอบคุณที่ให้กระสุนแก่ฉันมากขึ้นและอ้างอิงถึงตำแหน่งและเวลาที่จะเข้าใกล้สิ่งนี้ ฉันได้ +1 กรณีการใช้งานที่ถูกต้องเช่น: - การเพิ่มประสิทธิภาพการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์เฉพาะ - ห้องปฏิบัติการทดสอบ - เป็นไปได้ที่จะซื้อเซิร์ฟเวอร์ที่ดีกว่าแทนที่จะเป็นกราฟิกการ์ดสายด้านบน
130 ide  testing  performance 

11
การสำรองการอ้างสิทธิ์ที่ C ++ สามารถทำได้เร็วกว่า JVM หรือ CLR ด้วย JIT คืออะไร [ปิด]
ชุดรูปแบบที่เกิดขึ้นซ้ำ ๆ ใน SE ที่ฉันสังเกตเห็นในคำถามหลายข้อเป็นข้อโต้แย้งอย่างต่อเนื่องว่า C ++ นั้นเร็วกว่าและ / หรือมีประสิทธิภาพมากกว่าภาษาระดับสูงกว่าอย่าง Java ข้อโต้แย้งคือ JVM หรือ CLR ที่ทันสมัยสามารถมีประสิทธิภาพได้เช่นเดียวกับ JIT และอื่น ๆ สำหรับงานที่เพิ่มมากขึ้นและ C ++ นั้นมีประสิทธิภาพมากขึ้นถ้าคุณรู้ว่าคุณกำลังทำอะไรและทำไมการทำสิ่งต่าง ๆ จะเพิ่มประสิทธิภาพการทำบุญ นั่นชัดเจนและสมเหตุสมผลดี ฉันต้องการทราบคำอธิบายพื้นฐาน (หากมีสิ่งนั้น ... ) ว่าทำไมและอย่างไรงานบางอย่างจะเร็วขึ้นใน C ++ กว่า JVM หรือ CLR? มันเป็นเพราะ C ++ ถูกคอมไพล์เป็นรหัสเครื่องในขณะที่ JVM หรือ CLR ยังคงมีโอเวอร์เฮดของการประมวลผลของการคอมไพล์ JIT ณ รันไทม์? เมื่อฉันพยายามที่จะศึกษาหัวข้อทั้งหมดที่ฉันพบคือข้อโต้แย้งเดียวกับที่ฉันระบุไว้ข้างต้นโดยไม่มีข้อมูลรายละเอียดใด ๆ …
119 java  c++  performance  jit 

15
เมื่อใดจึงควรปรับให้เหมาะสมสำหรับหน่วยความจำและประสิทธิภาพความเร็วสำหรับวิธีการ?
ฉันเพิ่งสัมภาษณ์ที่อเมซอน ในระหว่างเซสชันการเข้ารหัสผู้สัมภาษณ์ถามว่าทำไมฉันถึงประกาศตัวแปรในวิธีหนึ่ง ฉันอธิบายกระบวนการของฉันและเขาท้าทายให้ฉันแก้ปัญหาเดียวกันโดยมีตัวแปรน้อยลง ยกตัวอย่างเช่น (นี่คือไม่ได้มาจากการสัมภาษณ์) ผมเริ่มต้นด้วยวิธี A:แล้วดีขึ้นก็จะวิธีการ Bint sโดยการเอา เขายินดีและกล่าวว่าวิธีนี้จะลดการใช้หน่วยความจำด้วยวิธีนี้ ฉันเข้าใจตรรกะเบื้องหลัง แต่คำถามของฉันคือ: เมื่อใดจึงเหมาะสมที่จะใช้วิธี A กับวิธี B และในทางกลับกัน คุณจะเห็นว่าA วิธีการที่เป็นไปได้ใช้หน่วยความจำที่สูงขึ้นเนื่องจากint sมีการประกาศ a + bแต่มันเท่านั้นที่มีการดำเนินการอย่างใดอย่างหนึ่งในการคำนวณคือ ในทางกลับกันวิธีการ Bมีการใช้หน่วยความจำลดลง แต่ต้องทำการคำนวณa + bสองครั้งคือสองครั้ง ฉันจะใช้เทคนิคหนึ่งเหนือเทคนิคอื่นได้อย่างไร หรือเป็นหนึ่งในเทคนิคที่ต้องการมากกว่าเสมอ? สิ่งที่ต้องพิจารณาเมื่อประเมินทั้งสองวิธีมีอะไรบ้าง วิธี A: private bool IsSumInRange(int a, int b) { int s = a + b; if (s > 1000 …

14
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ในการเขียนโค้ดที่ต้องอาศัยการปรับให้เหมาะสมของคอมไพเลอร์?
ฉันได้เรียนรู้ C ++ บางอย่างและมักจะต้องส่งคืนวัตถุขนาดใหญ่จากฟังก์ชั่นที่สร้างขึ้นภายในฟังก์ชั่น ฉันรู้ว่ามีการส่งต่อโดยอ้างอิงส่งคืนตัวชี้และส่งคืนโซลูชันประเภทการอ้างอิง แต่ฉันยังอ่านว่าคอมไพเลอร์ C ++ (และมาตรฐาน C ++) อนุญาตให้ปรับค่าส่งคืนได้ซึ่งหลีกเลี่ยงการคัดลอกวัตถุขนาดใหญ่เหล่านี้ผ่านหน่วยความจำ ประหยัดเวลาและความทรงจำทั้งหมด ตอนนี้ฉันรู้สึกว่าไวยากรณ์มีความชัดเจนมากขึ้นเมื่อวัตถุถูกส่งคืนโดยค่าอย่างชัดเจนและคอมไพเลอร์จะใช้ RVO และทำให้กระบวนการมีประสิทธิภาพมากขึ้น เป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะต้องพึ่งพาการเพิ่มประสิทธิภาพนี้ มันทำให้รหัสชัดเจนขึ้นและสามารถอ่านได้มากขึ้นสำหรับผู้ใช้ซึ่งมีความสำคัญอย่างยิ่ง แต่ฉันควรระวังว่าการคอมไพเลอร์จะจับโอกาส RVO หรือไม่ นี่เป็นการเพิ่มประสิทธิภาพขนาดเล็กหรือสิ่งที่ฉันควรทราบเมื่อออกแบบรหัสของฉัน
99 c++  performance 

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

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

15
ทำไม Java ถึงเป็นไปได้เร็วกว่า C ++?
บางครั้ง Java มีประสิทธิภาพสูงกว่า C ++ ในการวัดประสิทธิภาพ แน่นอนว่าบางครั้ง C ++ มีประสิทธิภาพสูงกว่า ดูลิงค์ต่อไปนี้: http://keithlea.com/javabench/ http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ http://blog.cfelde.com/2010/06/c-vs-java-performance/ แต่สิ่งนี้เป็นไปได้อย่างไร มันรบกวนความคิดของฉันที่การแปลรหัสโดยโค้ดอาจเร็วกว่าภาษาที่คอมไพล์ ใครช่วยอธิบายหน่อยได้ไหม? ขอบคุณ!
79 java  c++  performance 

10
ทำความสะอาดโค้ดที่อ่านได้และโค้ดที่อ่านยากอย่างรวดเร็ว เมื่อไหร่ที่จะข้ามเส้น?
เมื่อฉันเขียนรหัสฉันพยายามทำให้รหัสของฉันสะอาดและอ่านง่ายที่สุดเท่าที่จะทำได้ ทุกครั้งที่มีเวลาที่คุณต้องข้ามเส้นและไปจากรหัสที่สะอาดดีเป็นรหัสที่น่าเกลียดเล็กน้อยเพื่อให้เร็วขึ้น เมื่อไรที่จะข้ามเส้นนั้น?

7
การเปรียบเทียบ 1 <10 ราคาถูกกว่า 1 <1000000 หรือไม่
ฉันเพิ่งใช้จำนวนประมาณ 1 พันล้านz-indexใน CSS และคิดเกี่ยวกับการเปรียบเทียบที่ต้องดำเนินต่อไป มีความแตกต่างของประสิทธิภาพในระดับ ALU ในการเปรียบเทียบระหว่างตัวเลขขนาดใหญ่มากและเล็กมากหรือไม่? ตัวอย่างเช่นหนึ่งในสองตัวอย่างนี้จะมีราคาแพงกว่าอีกตัวอย่างหนึ่งหรือไม่ snippet 1 for (int i = 0; i &lt; 10000000; i++){ if (i &lt; 10000000000000) { //do nothing } } snippet 2 for (int i = 0; i &lt; 10000000; i++){ if (i &lt; 1000) { //do nothing } }
65 performance  cpu 

18
ทำไมคนยังพูดว่า Java ช้า? [ปิด]
เป็นเวลานานใน SO และในที่อื่น ๆ Java มีชื่อเสียงว่าเป็นคนช้า จากเรื่องตลกไปจนถึงความคิดเห็นในคำถามและคำตอบผู้คนยังคงเชื่อว่า Java นั้นช้าตามประสบการณ์ในยุค 90 เพียงอย่างเดียว นี่คือปัญหาของฉัน: เราได้หักล้าง (ส่วนใหญ่) สาเหตุที่ผู้คนเชื่อว่าชวาช้า นอกเหนือจากสิ่งเล็ก ๆ แล้ว Java นั้นค่อนข้างเร็ว ดังนั้นทำไมคนยังปฏิเสธที่จะเชื่อว่า Java เร็วในขณะนี้ เป็นส่วนหนึ่งของความคิดของพวกเขาหรือไม่ว่าอะไรที่ไม่ใช่ C / C ++ นั้นช้า? เป็นเพราะคนไม่ได้ตรวจสอบเมื่อเวลาผ่านไป? เป็นเพราะคนมีความลำเอียงใช่ไหม
61 java  performance 

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

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