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

คำถามเกี่ยวกับ C ++ ซึ่งเป็นภาษาการเขียนแบบสแตติกแบบหลายกระบวนทัศน์รวบรวมภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไป

2
ไลบรารี C ++ 11 ที่รวบรวม (lib, dll และอื่น ๆ ) สามารถเชื่อมโยงกับคอมไพเลอร์ C ++ รุ่นเก่าได้หรือไม่?
สามารถคอมไพเลอร์ C ++ รุ่นเก่า (เช่น VS2008 และ gcc3.4) เชื่อมโยงกับไลบรารีภายนอกที่เขียนด้วย C ++ 11 ได้หรือไม่? ความคิดของฉันคือไฟล์ C ++ 11 .lib เป็นเพียงโค้ดไบต์ในขั้นตอนนี้และไม่ควรรบกวนคอมไพเลอร์รุ่นเก่าที่สร้างขึ้นมาตราบใดที่มันสามารถแก้ไขและเรียกใช้ได้ ฉันกำลังพัฒนาห้องสมุดขนาดเล็กซึ่ง API ยังควรสนับสนุนผู้ใช้ C ++ 03 ดังนั้นมองไปข้างหน้าฉันสงสัยว่ามันโอเคที่จะใช้ห้องสมุดของฉันโดยใช้คุณสมบัติที่เป็นประโยชน์std::unique_ptrเช่นนี้หรือไม่หรือฉันต้องติดกับboost::?
12 c++  c++11 

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

5
วิธีการออกแบบข้อยกเว้น
ฉันกำลังดิ้นรนกับคำถามง่าย ๆ : ตอนนี้ฉันกำลังทำงานกับแอปพลิเคชันเซิร์ฟเวอร์และฉันต้องคิดค้นลำดับชั้นสำหรับข้อยกเว้น (มีข้อยกเว้นบางอย่างอยู่แล้ว แต่จำเป็นต้องใช้กรอบงานทั่วไป) ฉันจะเริ่มทำสิ่งนี้ได้อย่างไร ฉันกำลังคิดว่าจะทำตามกลยุทธ์นี้: 1) เกิดอะไรขึ้น? มีบางสิ่งถามซึ่งไม่ได้รับอนุญาต มีการถามอะไรบางอย่างอนุญาต แต่ไม่ทำงานเนื่องจากพารามิเตอร์ผิด มีการถามบางสิ่งอนุญาต แต่ไม่ทำงานเนื่องจากข้อผิดพลาดภายใน 2) ใครเป็นผู้เปิดตัวคำขอ? แอปพลิเคชันไคลเอนต์ แอปพลิเคชันเซิร์ฟเวอร์อื่น 3) การส่งข้อความ: เนื่องจากเรากำลังติดต่อกับแอปพลิเคชันเซิร์ฟเวอร์ทุกอย่างเกี่ยวกับการรับและส่งข้อความ แล้วถ้าเกิดว่าการส่งข้อความผิดพลาดล่ะ ดังนั้นเราอาจได้รับประเภทข้อยกเว้นดังต่อไปนี้: ServerNotAllowedException ClientNotAllowedException ServerParameterException ClientParameterException InternalException (ในกรณีที่เซิร์ฟเวอร์ไม่รู้ว่าคำขอมาจากไหน) ServerInternalException ClientInternalException MessageHandlingException นี่เป็นวิธีการทั่วไปในการกำหนดลำดับชั้นของข้อยกเว้น แต่ฉันกลัวว่าฉันอาจจะขาดบางกรณีที่ชัดเจน คุณมีความคิดเห็นเกี่ยวกับประเด็นที่ฉันไม่ครอบคลุมหรือไม่คุณทราบถึงข้อเสียของวิธีการนี้หรือมีวิธีการทั่วไปในการถามคำถามประเภทนี้ (ในกรณีหลังฉันจะหาได้ที่ไหน) ขอบคุณล่วงหน้า
11 design  c++  exceptions  stl 

2
มันถือว่าขี้เกียจหรือเปล่าถ้าฉันใช้พีชคณิตเชิงเส้นสำหรับ C ++?
ก่อนอื่นให้ฉันให้พื้นฐานก่อนที่จะระบุคำถามจริง ฉันเรียนวิชาฟิสิกส์และชั้นเรียนการเขียนโปรแกรมทั้งหมดของฉันอยู่ในภาษาการเขียนโปรแกรมอย่างง่ายเช่น MATLAB โดยง่ายฉันหมายถึงภาษาที่ใช้ในการคิดมากกับคุณ ... ในอีกไม่กี่ปีข้างหน้าฉันจะเรียนวิชาวิทยาการคอมพิวเตอร์และฉันก็กำลังคิดที่จะใฝ่หาอาชีพในการเขียนโปรแกรม เมื่อพิจารณาจากหลักสูตรวิทยาลัยจำนวนมากที่อยู่ใน C ++ จะใช้แพคเกจพีชคณิตเชิงเส้น (อาร์มาดิลโล) ที่มีไวยากรณ์คล้ายกับ MATLAB หรือไม่? ฉันกำลังเขียนอัลกอริธึมทางพันธุกรรมขึ้นมาในขณะนี้และในขณะที่มันทำงานได้อย่างรวดเร็วใน MATLAB มันใช้เวลานานมากใน C ++ โดยไม่ต้องใช้แพ็คเกจเหล่านี้ มันทำงานอย่างไรในชีวิตจริง คุณอนุญาตให้ใช้แพ็คเกจใด ตัวอย่างเช่นฉันไม่ต้องการสร้างความรู้ C ++ ของฉันด้วยตัวนิ่มและไม่มีความรู้เชิงลึกเกี่ยวกับแพ็คเกจอื่น ๆ ที่ใช้กันอย่างแพร่หลายเช่น "vector.h" "อัลกอริทึม" "รายการ" เป็นต้น
11 c++  experience 

4
การออกแบบรูปแบบคำสั่ง
ฉันมีการใช้รูปแบบคำสั่งเก่านี้ เป็นการผ่านบริบทผ่านการใช้งานDIOperationทั้งหมดแต่ฉันรู้ในภายหลังในกระบวนการเรียนรู้และการเรียนรู้ (ที่ไม่เคยหยุดนิ่ง) นั่นไม่เหมาะสม ฉันยังคิดว่า "การเยี่ยมชม" ที่นี่ไม่เหมาะและสับสนจริงๆ จริง ๆ แล้วฉันกำลังคิดที่จะเปลี่ยนรหัสของฉันอีกครั้งเนื่องจากคำสั่งไม่ควรรู้อะไรเกี่ยวกับผู้อื่นและในขณะนี้พวกเขาทั้งหมดใช้คู่ค่าคีย์เดียวกัน มันยากที่จะรักษาคลาสที่เป็นเจ้าของคีย์ - ค่าซึ่งบางครั้งนำไปสู่ตัวแปรที่ซ้ำกัน ตัวอย่างกรณีการใช้งานสมมติว่าCommandBต้องการชื่อผู้ใช้ที่CommandAกำหนดไว้ CommandA ควรตั้งค่าUserNameForCommandB = Johnหรือไม่ หรือพวกเขาควรแบ่งปันชื่อผู้ใช้ทั่วไป= John key-value หรือไม่ จะเกิดอะไรขึ้นหากชื่อผู้ใช้ถูกใช้โดยคำสั่งที่สาม ฉันจะปรับปรุงการออกแบบนี้ได้อย่างไร ขอบคุณ! class DIParameters { public: /** * Parameter setter. */ virtual void setParameter(std::string key, std::string value) = 0; /** * Parameter getter. */ virtual std::string getParameter(std::string …

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

3
Low Latency Unix / Linux
งานการเขียนโปรแกรม latency / ความถี่สูงต่ำส่วนใหญ่ (ขึ้นอยู่กับรายละเอียดของงาน) ดูเหมือนจะนำไปใช้กับแพลตฟอร์มยูนิกซ์ ในสเป็คจำนวนมากพวกเขาร้องขอเป็นพิเศษสำหรับผู้ที่มีประสบการณ์ประเภท "Linux latency ต่ำ" สมมติว่าสิ่งนี้ไม่ได้หมายถึงระบบปฏิบัติการ linux แบบเรียลไทม์ผู้คนสามารถให้ความช่วยเหลือฉันเกี่ยวกับสิ่งนี้ได้หรือไม่ ฉันรู้ว่าคุณสามารถตั้งค่าความสัมพันธ์ของ CPU กับเธรดได้ แต่ฉันสมมติว่าพวกเขาขอมากไปกว่านั้น การปรับแต่งเคอร์เนล? (แม้ว่าฉันจะได้ยินผู้ผลิตเช่น solarflare ผลิตการ์ดเครือข่ายผ่านเคอร์เนลอยู่แล้ว)? สิ่งที่เกี่ยวกับ DMA หรือหน่วยความจำที่ใช้ร่วมกันระหว่างกระบวนการ หากผู้คนสามารถให้ความคิดสั้น ๆ กับฉันฉันสามารถไปและทำวิจัยบน google (คำถามนี้อาจต้องมีคนคุ้นเคยกับการซื้อขายความถี่สูง)
11 c++  c  performance  linux  latency 

8
Java นั้นยากกว่าการ "ปรับแต่ง" เพื่อประสิทธิภาพเมื่อเทียบกับ C / C ++ หรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว "ความมหัศจรรย์" ของ JVM ขัดขวางอิทธิพลของโปรแกรมเมอร์ที่มีต่อการปรับให้เหมาะสมขนาดจิ๋วใน Java หรือไม่? ฉันเพิ่งอ่านใน C ++ บางครั้งการเรียงลำดับของข้อมูลสมาชิกสามารถให้การเพิ่มประสิทธิภาพ (ได้รับในสภาพแวดล้อม microsecond) และฉันสันนิษฐานว่ามือของโปรแกรมเมอร์ถูกผูกไว้เมื่อมันมาถึงการบีบประสิทธิภาพจาก Java? ฉันขอขอบคุณอัลกอริทึมที่เหมาะสมให้ความเร็วที่เพิ่มขึ้น แต่เมื่อคุณมีอัลกอริทึมที่ถูกต้องแล้ว Java จะปรับแต่งยากขึ้นเนื่องจากการควบคุม JVM หรือไม่ ถ้าไม่ใช่คนอาจยกตัวอย่างว่าคุณสามารถใช้กลอุบายอะไรใน Java (นอกเหนือจากการคอมไพล์แฟล็กเรียบง่าย)

4
การใช้ชื่ออักขระสากลในตัวระบุใน C ++ คืออะไร
c ++ มาตรฐาน (ผมสังเกตเห็นมันในหนึ่งใหม่ แต่มันก็มีอยู่แล้วใน C ++ 03) ระบุชื่อตัวละครสากลเขียนเป็น\uNNNNและ\UNNNNNNNNคิดเป็นตัวละครที่มี codepoints Unicode /NNNN NNNNNNNNสิ่งนี้มีประโยชน์กับตัวอักษรสตริงโดยเฉพาะอย่างยิ่งเนื่องจากมีการกำหนดตัวอักษรสตริง UTF-8, UTF-16 และ UCS-4 อย่างชัดเจน อย่างไรก็ตามอนุญาตให้ใช้ตัวอักษรสากลได้ในตัวระบุ แรงจูงใจเบื้องหลังคืออะไร? เห็นได้ชัดว่าไวยากรณ์นั้นไม่สามารถอ่านได้อย่างสมบูรณ์ตัวระบุอาจถูกจับคู่กับลิงเกอร์และมันก็ไม่เหมือนกับว่ามีฟังก์ชั่นมาตรฐานใด ๆ ในการดึงสัญลักษณ์ตามชื่ออย่างไรก็ตาม ดังนั้นทำไมทุกคนจะใช้ตัวระบุที่มีตัวอักษรสากลในนั้น แก้ไข: เนื่องจากมีอยู่จริงใน C ++ 03 แล้วคำถามเพิ่มเติมจะเป็นอย่างไรถ้าคุณเห็นรหัสที่ใช้จริงหรือไม่
11 c++  c++11 

3
การเขียนโปรแกรมเดสก์ท็อปข้ามแพลตฟอร์ม: C ++ vs. Python [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เอาล่ะฉันจะมีประสบการณ์ในฐานะโปรแกรมเมอร์ Obj-C / Cocoa และ Ruby w / Rails มือสมัครเล่น สิ่งเหล่านี้ยอดเยี่ยม แต่ก็ไม่ค่อยมีประโยชน์สำหรับการเขียนแอปพลิเคชันข้ามแพลตฟอร์ม (หวังว่า GNUStep จะเสร็จสมบูรณ์ในวันแรกสำหรับแพลตฟอร์มหลายแพลตฟอร์ม แต่วันนั้นไม่ใช่วันนี้) C ++ จากสิ่งที่ฉันสามารถรวบรวมได้นั้นเป็นพลังที่ยิ่งใหญ่ แต่ก็เป็นพฤติกรรมที่น่าเกลียดขนาดใหญ่ที่ใช้เวลาครึ่งทศวรรษหรือมากกว่านั้นในการควบคุม ฉันยังได้อ่านด้วยว่าคุณสามารถถ่ายภาพตัวเองได้อย่างง่ายดายไม่เพียงแค่ถ่ายภาพเท้าของคุณเองเท่านั้น เห็นได้ชัดว่าทั้งหมดนี้ค่อนข้างน่ากลัว ถูกต้องหรือไม่ Python ดูเหมือนจะให้พลังมากที่สุดของ C ++ และง่ายต่อการรับด้วยความเร็ว การเสียสละครั้งนี้ใหญ่แค่ไหน? มันมีความหมายหรือสามารถเพิกเฉยได้? ฉันจะเขียนแอปพลิเคชั่นที่รวดเร็วเสถียรและมีความน่าเชื่อถือสูงในระยะเวลาที่เหมาะสมได้อย่างไร นอกจากนี้จะเป็นการดีกว่าถ้าใช้ Qt สำหรับ UI ของคุณหรือรักษาการแยกส่วนหน้าเนทีฟแบบดั้งเดิมสำหรับแต่ละแพลตฟอร์มแทน แก้ไข: เพื่อความชัดเจนเป็นพิเศษมีแอพพลิเคชั่นสองประเภทที่ฉันต้องการเขียน: หนึ่งคือ frontend ฐานข้อมูลที่เป็นมิตรและสะดวกมากและอีกอันหนึ่งซึ่งไม่ต้องสงสัยเลยว่าจะเกิดขึ้นในภายหลัง

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

4
ฉันควรใส่บรรทัดใหม่ก่อนหรือหลังตัวดำเนินการไบนารีหรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อคุณอยู่ใน Python หรือ Javascript คุณควรใส่ตัวดำเนินการไบนารีที่ท้ายบรรทัดก่อนหน้าเสมอเพื่อป้องกันการขึ้นบรรทัดใหม่จากการยกเลิกรหัสของคุณก่อนกำหนด มันช่วยให้คุณตรวจจับข้อผิดพลาด แต่ใน C หรือ C ++ นี่ไม่ใช่ปัญหาดังนั้นฉันจึงสงสัยว่า: มีเหตุผลใดที่ฉันจะเลือกรุ่นที่สองมากกว่ารุ่นแรก return lots_of_text + 1; กับ return lots_of_text + 1; (ตัวอย่างเช่นข้อใดข้อหนึ่งช่วยป้องกันข้อผิดพลาดชนิดอื่นหรือไม่หรือข้อใดข้อหนึ่งพิจารณาว่าสามารถอ่านได้มากกว่า)
11 c++  coding-style 

3
วิธีจัดการกับคำถามสัมภาษณ์เกี่ยวกับรูปแบบการเขียนโปรแกรม [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ในฐานะผู้เขียนโปรแกรม C ++ ในการสัมภาษณ์ฉันพบว่าตัวเองอยู่ในสถานการณ์บ่อยครั้งผู้สัมภาษณ์ต้องการแสดงความรู้เกี่ยวกับรูปแบบการเขียนโปรแกรมที่ดี โดยทั่วไปแล้วสิ่งเหล่านี้มีศูนย์กลางอยู่ที่ความรู้พื้นฐานของ OOP ฉันรู้ว่า OOP มีประโยชน์ในการสรุปแนวคิดและฉันใช้ทุกวัน อย่างไรก็ตามเนื่องจากภาษาอย่าง C ++ อนุญาตให้มีสไตล์ที่แตกต่างกันและบางวิธีของ C ++ เช่นอัลกอริธึม TMP หรือ STL ไม่ใช่ OOP เลย (แต่ค่อนข้างเหมือนการเขียนโปรแกรมที่ใช้งานได้) ฉันพบว่าตัวเองติดอยู่กับวิธีที่ดีที่สุด ดีโดยไม่ต้องเจอว่าเป็นคนที่หยิ่งยโสหรือเป็นคนที่ไม่มีความรู้พื้นฐาน ฉันกลัวว่าการเน้นไปที่ OOP ของผู้ถามจะมาจากพวกเขาที่เข้าสังคมในยุค 90 ที่ OOP เชื่อว่าเป็นวิธีรักษาทั้งหมด แต่นั่นเป็นจุดยืนที่หยิ่งจองหอง ฉันจะทำให้ดีที่สุดของคำถามเช่นนี้ได้อย่างไร

4
คำว่า "อินเตอร์เฟส" ใน C ++
Java ทำให้ความแตกต่างที่ชัดเจนระหว่างและclass interface(ฉันเชื่อว่า C # ทำเช่นนั้น แต่ฉันไม่มีประสบการณ์ด้วย) เมื่อเขียน C ++ อย่างไรก็ตามไม่มีภาษาบังคับให้แยกความแตกต่างระหว่างคลาสและส่วนต่อประสาน ดังนั้นฉันมักจะดูอินเตอร์เฟซเป็นวิธีแก้ปัญหาสำหรับการขาดการสืบทอดหลายใน Java การทำให้ความแตกต่างดังกล่าวให้ความรู้สึกโดยพลการและไร้ความหมายใน C ++ ฉันมักจะไปกับวิธีการ "เขียนสิ่งต่าง ๆ ในวิธีที่ชัดเจนที่สุด" ดังนั้นใน C ++ ฉันมีสิ่งที่เรียกว่าส่วนติดต่อใน Java เช่น: class Foo { public: virtual void doStuff() = 0; ~Foo() = 0; }; และฉันก็ตัดสินใจว่าผู้ดำเนินการส่วนใหญ่Fooต้องการแบ่งปันฟังก์ชั่นทั่วไปบางอย่างที่ฉันอาจจะเขียน: class Foo { public: virtual void doStuff() = 0; ~Foo() …

4
วิธีการต่อต้านรหัสฐานช้าลงอย่างสม่ำเสมอ
เรากำลังทำงานอยู่ในระดับปานกลาง C ขนาด ++ รหัสฐาน (10Mloc) ซึ่งผ่านความพยายามเพิ่มประสิทธิภาพของเราจะกลายเป็นเหมือนกันช้า รหัสฐานนี้เป็นชุดของห้องสมุดที่เรารวมกันเพื่อให้ทำงานได้ เมื่อเฟรมเวิร์กทั่วไปของวิธีที่การสื่อสารของไลบรารีเหล่านี้ได้รับการพัฒนามีความสำคัญต่อประสิทธิภาพการทำงานและในภายหลังเมื่อมีส่วนเพิ่มมากขึ้นเฟรมเวิร์กทั่วไปจะไม่เปลี่ยนแปลงมากนัก การปรับให้เหมาะสมทำเมื่อจำเป็นและตามที่ฮาร์ดแวร์ของเราพัฒนาขึ้น การตัดสินใจครั้งแรกนี้มีราคาแพงชัดเจนมากในภายหลังเท่านั้น ขณะนี้เราอยู่ในจุดที่การเพิ่มประสิทธิภาพเพิ่มเติมนั้นมีราคาแพงกว่ามากเนื่องจากพวกเขาต้องการการเขียนส่วนใหญ่ของฐานรหัส เราพบว่าตัวเองกำลังเข้าใกล้จุดต่ำสุดที่ไม่พึงประสงค์ในท้องถิ่นเนื่องจากเรารู้ว่าในหลักการแล้วรหัสควรจะสามารถทำงานได้เร็วขึ้นมาก มีวิธีการที่ประสบความสำเร็จหรือไม่ซึ่งช่วยในการตัดสินใจว่าอะไรจะเกิดขึ้นกับการวิวัฒนาการของรหัสฐานไปสู่โซลูชั่นที่มีประสิทธิภาพสูงสุดทั่วโลกซึ่งไม่สับสนอย่างง่ายดายจากโอกาสในการปรับให้เหมาะสมที่ง่ายดาย? แก้ไข หากต้องการตอบคำถามว่าเราโปรไฟล์อย่างไร: เรามีเพียงสถานการณ์จำลองที่แตกต่างกันสองวิธีที่วิธีการใช้รหัสนี้ทั้งคู่ขนานที่น่าอาย การทำโปรไฟล์ทำได้ทั้งเวลาที่นาฬิกาแขวนมีค่าเฉลี่ยในกลุ่มตัวอย่างขนาดใหญ่ของอินพุตและการทำงานที่มีรายละเอียดมากขึ้น (ต้นทุนการสอน สิ่งนี้ทำงานได้ดีเนื่องจากเราทำงานเฉพาะในเครื่องที่เป็นเนื้อเดียวกันมาก (คลัสเตอร์ของเครื่องที่เหมือนกันสองพันเครื่อง) เนื่องจากเรามักจะทำให้เครื่องของเรายุ่งตลอดเวลาส่วนใหญ่ทำงานได้เร็วขึ้นหมายความว่าเราสามารถดูสิ่งใหม่เพิ่มเติม ปัญหาคือแน่นอนว่าเมื่อรูปแบบการป้อนข้อมูลใหม่ปรากฏขึ้นพวกเขาอาจได้รับโทษขั้นปลายเนื่องจากเราลบความไร้ประสิทธิภาพที่ชัดเจนที่สุดสำหรับกรณีการใช้งานอื่น ๆ ดังนั้นจึงอาจลดจำนวนสถานการณ์
11 c++  optimization 

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