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

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

2
รหัสใดดีสำหรับการเพิ่มประสิทธิภาพการทำนายสาขา
การคาดการณ์ของสาขาและผลของการปรับแต่งคอมไพเลอร์รหัสใดมีแนวโน้มที่จะให้ประสิทธิภาพที่เหนือกว่า? โปรดทราบว่า bRareExceptionPresent แสดงถึงเงื่อนไขที่ผิดปกติ มันไม่ใช่เส้นทางปกติของตรรกะ /* MOST COMMON path must branch around IF clause */ bool SomeFunction(bool bRareExceptionPresent) { // abort before function if(bRareExceptionPresent) { return false; } .. function primary body .. return true; } /* MOST COMMON path does NOT branch */ bool SomeFunction(bool bRareExceptionPresent) { if(!bRareExceptionPresent) { …

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

10
ความเร็วของซอฟต์แวร์ปรากฏชัดในสายตาของลูกค้าบ่อยแค่ไหน?
ในทางทฤษฎีลูกค้าควรรู้สึกถึงการปรับปรุงประสิทธิภาพของซอฟต์แวร์จากประสบการณ์โดยตรง ในทางปฏิบัติบางครั้งการปรับปรุงนั้นไม่สามารถสังเกตเห็นได้ชัดเจนเช่นในการสร้างรายได้จากการปรับปรุงจำเป็นต้องใช้ตัวเลขประสิทธิภาพที่สามารถอ้างอิงได้ในการตลาดเพื่อดึงดูดลูกค้า เราทราบถึงความแตกต่างระหว่างประสิทธิภาพที่รับรู้ (ความหน่วงแฝงของ GUI และอื่น ๆ ) กับประสิทธิภาพของฝั่งเซิร์ฟเวอร์ (เครื่องจักรเครือข่ายโครงสร้างพื้นฐาน ฯลฯ ) โปรแกรมเมอร์จำเป็นต้องใช้เวลานานแค่ไหนในการวิเคราะห์ประสิทธิภาพ "เขียน" ซึ่งผู้ชมไม่ใช่เพื่อนโปรแกรมเมอร์ แต่เป็นผู้จัดการและลูกค้า

4
ฉันเพิ่มประสิทธิภาพก่อนเวลาอันควรหรือไม่
ขณะนี้ฉันอยู่ในขั้นตอนการออกแบบของสถาปัตยกรรมที่อิงส่วนประกอบใน C ++ การออกแบบปัจจุบันของฉันรวมถึงการใช้งานคุณสมบัติต่างๆเช่น: std::vectors ของstd::shared_ptrs เพื่อเก็บส่วนประกอบ std::dynamic_pointer_cast std::unordered_map<std::string,[yada]> ส่วนประกอบจะแสดงข้อมูลและตรรกะของรายการต่าง ๆ ที่จำเป็นในซอฟต์แวร์เช่นเกมเช่นกราฟิกฟิสิกส์ AI เสียง ฯลฯ ฉันได้อ่านทุกที่ที่แคชคิดถึงนั้นยากต่อการปฏิบัติงานดังนั้นฉันจึงทำการทดสอบบางอย่างซึ่งทำให้ฉันเชื่อว่าจริง ๆ แล้วมันสามารถทำให้แอปพลิเคชันช้าลง ฉันไม่สามารถทดสอบคุณสมบัติภาษาดังกล่าวได้ แต่มีการกล่าวในหลาย ๆ ที่ว่าสิ่งเหล่านี้มักจะมีค่าใช้จ่ายสูงและควรหลีกเลี่ยงหากเป็นไปได้ เนื่องจากฉันอยู่ในขั้นตอนการออกแบบของสถาปัตยกรรมและสิ่งเหล่านี้จะรวมอยู่ในหลักของการออกแบบฉันควรพยายามหาวิธีที่จะหลีกเลี่ยงพวกเขาตอนนี้เนื่องจากมันจะยากมากที่จะเปลี่ยนในภายหลังหากมีประสิทธิภาพ ปัญหา? หรือฉันเพิ่งถูกจับในการเพิ่มประสิทธิภาพก่อนวัยอันควร?

3
อัลกอริทึมของฉันที่แยกกล่องที่ใหญ่ที่สุดที่สามารถสร้างได้จากกล่องที่เล็กกว่านั้นช้าเกินไป
ลองจินตนาการถึงโลกตามก้อน (เช่น Minecraft, Trove หรือ Cube โลก) ที่ทุกอย่างถูกสร้างขึ้นจากก้อนขนาดเดียวกันและก้อนทั้งหมดเป็นของเดียวกันชนิด เป้าหมายคือการเป็นตัวแทนของโลกที่มีกล่องสี่เหลี่ยมจำนวนน้อยที่สุด (โดยรวมก้อน แต่ยังคงรูปร่างนูน (aka รูปร่างกล่องสี่เหลี่ยม)) อัลกอริทึมของฉันประสบความสำเร็จในสิ่งนี้ แต่ประสิทธิภาพของมันช้าเกินไปสำหรับวัตถุประสงค์ที่ตั้งใจไว้ มีอัลกอริทึมเร็วขึ้นหรือไม่ หลอก -C # -code สำหรับอัลกอริทึมของฉันเป็นพื้น: struct Coordinate { int x,y,z; }; //<-- integer based grid HashSet<Coordinate> world; // <-- contains all the cubes //width, height, and length represent how many cubes it spans struct …

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

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