ชื่อของฉันคือ Davide Faconti และงานของฉันเป็นหนึ่งในดีที่สุดในโลก: ฉันทำงานใน หุ่นยนต์
บล็อก/ที่เก็บนี้ได้รับการดูแลใน เวลาว่าง และไม่เกี่ยวข้องกับงานของฉันที่นั่น ดังนั้น ความคิดเห็น (และมส์) จึงเป็นของฉันทั้งหมดและไม่ได้เป็นตัวแทนนายจ้างของฉันในทางใดทางหนึ่ง
ฉันรักการเขียนโปรแกรม C ++ และโอเพ่นซอร์สและ "ไดอารี่" นี้เป็นผลงานเล็ก ๆ ของฉันต่อชุมชน OSS
การเพิ่มประสิทธิภาพรหัสใน C ++ เป็นสิ่งที่ไม่มีใครสามารถต้านทานได้ คุณสามารถสนุกและแกล้งทำเป็นว่าคุณกำลังทำสิ่งที่มีประโยชน์สำหรับองค์กรของคุณในเวลาเดียวกัน!
ในที่เก็บนี้ฉันจะบันทึกรูปแบบการออกแบบที่เรียบง่ายเพื่อปรับปรุงรหัสของคุณและลบค่าใช้จ่ายที่ไม่จำเป็นใน C ++
หากคุณเป็นผู้เชี่ยวชาญ C ++ ที่มีประสบการณ์คุณอาจมีชุดของกฎของคุณเองอยู่แล้ว
กฎเหล่านี้ช่วยให้คุณดูเหมือนวิศวกรที่ไม่ดี/rockstar/10x ให้กับเพื่อนร่วมงานของคุณ
คุณเป็นคนประเภทที่วาง std :: vector <> :: สำรองก่อนลูปและพยักหน้ายิ้มดูการปรับปรุงประสิทธิภาพและความประหลาดใจของสมาชิกในทีมของคุณ

หวังว่าตัวอย่างในพื้นที่เก็บข้อมูลนี้จะช่วยให้คุณบรรลุสถานะของปราชญ์นี้และในฐานะที่เป็นผลข้างเคียงช่วยโลกจากภาวะโลกร้อนทำให้รอบ CPU ที่ไร้ประโยชน์จากการสูญเปล่า
จากนั้นน่าเสียดายที่ใครบางคนในอีกด้านหนึ่งของโลกจะเริ่มขุด bitcoins หรือเขียนแอปพลิเคชันของเธอใน Python และความพยายามทั้งหมดของคุณในการประหยัดไฟฟ้าก็ไม่ได้เป็นอะไรเลย
ฉันล้อเล่นนักพัฒนา Python เรารักคุณ!
ผู้บรรยาย: "เขาไม่ได้ล้อเล่น ... "
สิ่งแรกที่บุคคลที่กังวลเกี่ยวกับการแสดงควรทำคือ:
ฉันและเพื่อนร่วมงานของฉันมักจะผิดเกี่ยวกับเหตุผลที่รหัสชิ้นหนึ่งช้า
บางครั้งเราพูดถูก แต่ก็ยากที่จะรู้ล่วงหน้าว่าการปรับโครงสร้างจะปรับปรุงประสิทธิภาพได้อย่างไร เครื่องมือการทำโปรไฟล์ที่ดีแสดงในไม่กี่นาที "ผลไม้แขวนต่ำ": งานขั้นต่ำผลประโยชน์สูงสุด!
การสรุป: การทำโปรไฟล์ 10 นาทีสามารถช่วยให้คุณประหยัดเวลาในการคาดเดาและ refactoring
เครื่องมือ "goto" ของฉันใน Linux คือ Hotspot และ Heaptrack ฉันเข้าใจว่า Windows มีเครื่องมือที่คล้ายกันเช่นกัน

ในสงครามเบนช์มาร์กหากคุณเป็นทหารนี่คือปืนไรเฟิลและระเบิดมือของคุณ
เมื่อคุณรู้ว่าส่วนใดของรหัสควรได้รับการปรับให้เหมาะสมคุณอาจต้องการใช้เกณฑ์มาตรฐานของ Google เพื่อวัดเวลาที่ใช้ในคลาสหรือฟังก์ชั่นที่เฉพาะเจาะจงมาก
คุณสามารถเรียกใช้งาน Google Benchmark ออนไลน์ได้ที่นี่: Quick-bench.com

การเขียนรหัสที่ดีก็เหมือนกับการแปรงฟัน: คุณควรทำโดยไม่คิดมากเกี่ยวกับเรื่องนี้มากเกินไป
มันเป็นกล้ามเนื้อที่คุณต้องฝึกฝนซึ่งจะแข็งแกร่งขึ้นเมื่อเวลาผ่านไป แต่ไม่ต้องกังวล: เมื่อคุณเริ่มต้นคุณจะเริ่มเห็นรูปแบบที่เกิดขึ้นซ้ำ ๆ ซึ่งง่ายอย่างน่าประหลาดใจและทำงานในกรณีการใช้งานที่แตกต่างกันมากมาย
การแจ้งเตือนสปอยเลอร์ : หนึ่งในเทคนิคที่รักที่สุดของฉันคือ การลดจำนวนการจัดสรรกอง คุณไม่รู้ว่าจะช่วยได้มากแค่ไหน
แต่มาทำให้สิ่งที่ชัดเจนอย่างแน่นอน:
กล่าวอีกนัยหนึ่งให้คิดสองครั้งก่อนที่จะทำการเปลี่ยนแปลงใด ๆ ในรหัสของคุณที่ทำให้สามารถอ่านได้น้อยลงหรือยากต่อการดีบักเพียงเพราะคุณเชื่อว่ามันอาจทำงานได้เร็วขึ้น 2.5%
สำหรับประสบการณ์การอ่านที่สะดวกสบายยิ่งขึ้นไปที่: https://cpp-optimizations.netlify.app
ใช้การอ้างอิง const โดยค่าเริ่มต้น
ย้าย semantic (สิ่งที่ต้องทำ)
การเพิ่มประสิทธิภาพค่าส่งคืน (สิ่งที่ต้องทำ)
ใช้ std :: เวกเตอร์ <> :: สำรองโดยค่าเริ่มต้น
"ฉันได้เรียนรู้รายการที่เชื่อมโยงที่มหาวิทยาลัยฉันควรใช้พวกเขาหรือไม่" บรูป
คุณไม่จำเป็นต้องใช้ std::map<> สำหรับสิ่งนั้น
การเพิ่มประสิทธิภาพเวกเตอร์ขนาดเล็ก
สตริงคือเวกเตอร์ (เกือบ)
เมื่อไม่ต้องกังวล: การเพิ่มประสิทธิภาพสตริงขนาดเล็ก
การเชื่อมต่อสตริง: ความรู้สึกผิดพลาดของความปลอดภัยของ operator+
std::string_view : รักแรกพบ (สิ่งที่ต้องทำ)
ตัวอย่าง: 2D/3D แปลงวิธีที่ถูกต้อง
การวนซ้ำผ่านเมทริกซ์ 2D: มีความสง่างามน้อยกว่าและมีประสิทธิภาพมากขึ้น
boost::container::flat_map คุณจะไม่จินตนาการว่าจะเกิดอะไรขึ้นต่อไปวิธีที่ง่ายและเร็วกว่าในการกรองเมฆจุดใน PCL
Fast Palindrome: ค่าใช้จ่ายของสาขาเงื่อนไข
งานนี้ได้รับใบอนุญาตภายใต้ CC BY-SA 4.0