ฉันกำลังตรวจสอบการเร่งการเติมโค้ดที่เป็นไปได้ในขณะที่ใช้กลไกการเติมโค้ดของ clang ขั้นตอนที่อธิบายด้านล่างคือสิ่งที่ฉันพบในrtagsโดย Anders Bakken
หน่วยการแปลถูกแยกวิเคราะห์โดยไฟล์การมอนิเตอร์ daemon สำหรับการเปลี่ยนแปลง สิ่งนี้ทำได้โดยเรียกclang_parseTranslationUnit
และฟังก์ชันที่เกี่ยวข้อง ( reparse*
, dispose*
) clang_codeCompleteAt
เมื่อผู้ใช้ร้องขอเสร็จสิ้นในเส้นที่กำหนดและคอลัมน์ในแฟ้มแหล่งที่มาที่ภูตผ่านการแปลหน่วยที่เก็บไว้สำหรับรุ่นที่บันทึกไว้ล่าสุดของแฟ้มแหล่งที่มาและแฟ้มแหล่งที่มาปัจจุบัน ( เอกสาร Clang CodeComplete )
ธงที่ส่งผ่านไปclang_parseTranslationUnit
(จากCompletionThread :: กระบวนการสาย 271 ) CXTranslationUnit_PrecompiledPreamble|CXTranslationUnit_CacheCompletionResults|CXTranslationUnit_SkipFunctionBodes
เป็น ธงที่ส่งผ่านไปclang_codeCompleteAt
(จากCompletionThread :: กระบวนการสาย 305 ) CXCodeComplete_IncludeMacros|CXCodeComplete_IncludeCodePatterns
เป็น
เรียกร้องให้clang_codeCompleteAt
ช้ามาก - มันจะใช้เวลาประมาณ 3-5 clang_codeCompleteAt
วินาทีเพื่อให้ได้เสร็จสิ้นแม้ในกรณีที่สถานที่ตั้งเสร็จสิ้นเป็นรหัสการเข้าถึงสมาชิกที่ถูกต้องเป็นส่วนหนึ่งของกรณีการใช้งานตั้งใจที่กล่าวถึงในเอกสารของ ดูเหมือนว่าวิธีนี้จะช้าเกินไปตามมาตรฐานการเติมรหัส IDE มีวิธีเร่งความเร็วนี้หรือไม่?
CXTranslationUnit_SkipFunctionBodies
, CXCodeComplete_IncludeMacros
, CXCodeComplete_IncludeCodePatterns
และไม่เห็นความแตกต่างอย่างมีนัยสำคัญใน codebase ที่ผมกำลังทำงานร่วมกับ ทั้งหมดเฉลี่ยประมาณ 4 วินาทีต่อการทำสำเร็จ ผมเดาว่าเป็นเพราะขนาดของม ธ . CXTranslationUnit_PrecompiledPreamble
มั่นใจได้ว่าreparseTU
รวดเร็วมาก อย่างไรก็ตามแม้จะมีCXTranslationUnit_CacheCompletionResults
, clang_codeCompleteAt
เจ็บปวดช้าสำหรับการใช้งานในกรณีของฉัน