ตอนที่ 7: โดย Bruce Dawson ในเมืองซีแอตเทิล รัฐวอชิงตัน (ตุลาคม 2019)
ตอนก่อนหน้า
บางครั้งการรวบรวมไฟล์แหล่งที่มาของ Chromium ไฟล์เดียวด้วยตนเองก็มีประโยชน์ โดยอาจลองใช้ตัวเลือกการเพิ่มประสิทธิภาพคอมไพเลอร์เพื่อประมวลผลล่วงหน้า ไฟล์เดียวเพื่อทำความเข้าใจรายละเอียดของมาโคร หรือย่อ ข้อบกพร่องของคอมไพเลอร์
เคล็ดลับ 2-3 ข้อจะช่วยให้นักพัฒนาซอฟต์แวร์ Chromium ค้นหาและเรียกใช้คำสั่ง คอมไพล์ไฟล์ต้นฉบับไฟล์ใดไฟล์หนึ่ง พร้อมการแก้ไขตามความจำเป็น
เริ่มต้นโดยไปที่ไดเรกทอรีเอาต์พุตและใช้ autoninja (หรือนินจา) เพื่อ
รวบรวมชื่อไฟล์ที่สนใจ (และทรัพยากร Dependency ทั้งหมด) โดยใช้คำต่อท้าย ^
คำต่อท้ายนี้จะบอกให้นินจาสร้างเอาต์พุตของ file—version.o
ที่ระบุ
ได้ในกรณีนี้ จากนั้นแตะไฟล์ และคอมไพล์ (เฉพาะไฟล์นั้น) อีกครั้งด้วย
Flag -v
(รายละเอียด) สำหรับนินจา:
ใน Linux หรือ OSX
autoninja ../../base/version.cc^
touch ../../base/version.cc
autoninja -v ../../base/version.cc^
ใน Windows cmd Shell ^
เป็นอักขระพิเศษและต้องกำหนดเป็นอักขระหลีก:
C:\> autoninja ../../base/version.cc^^
C:\> touch ../../base/version.cc
C:\> autoninja -v ../../base/version.cc^^
เอาต์พุตทั่วไปของคำสั่ง autoninja -v
มีลักษณะดังนี้ (มีนัยสำคัญ
ตัด):
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo /showIncludes -imsvc ...
คำสั่งนี้จะช่วยให้คุณรวมไฟล์ที่สนใจได้ วิธีรับการประมวลผลล่วงหน้า ให้ใช้ขั้นตอนต่อไปนี้
ใน Linux หรือ OSX ให้นำบล็อก -o obj/base/base/version.o
ออกจากส่วนท้าย
และเพิ่ม -E
การดำเนินการนี้จะบอกให้คอมไพเลอร์พิมพ์ไฟล์ที่ประมวลผลล่วงหน้าไปยัง
Stdout
เปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ดังนี้
../../third_party/llvm-build/Release+Asserts/bin/clang++ -MMD ... -E >version.i
ใน Windows ให้นำตัวเลือก /showIncludes
ออกตั้งแต่แรก (พิมพ์ว่า
บรรทัดเอาต์พุตสำหรับแต่ละ #include
) แล้วเพิ่ม /P
เพื่อให้
ประมวลผลไฟล์ล่วงหน้าแทนที่จะคอมไพล์ ผลลัพธ์จะได้รับการบันทึกไว้ใน
ไดเรกทอรีปัจจุบันใน version.i
:
..\..\third_party\llvm-build\Release+Asserts\bin\clang-cl.exe /nologo -imsvc ... /P
ตอนนี้คุณสามารถตรวจสอบไฟล์ที่ประมวลผลล่วงหน้าเพื่อดูว่ามาโครกำลังทำอะไรอยู่ หรือทำการเปลี่ยนแปลงคอมไพเลอร์สวิตช์แล้วคอมไพเลอร์อีกครั้งเพื่อดูว่าเกิดอะไรขึ้น
แหล่งข้อมูลเพิ่มเติม
- บิลด์ของ Chrome ที่รวดเร็ว: สำหรับเคล็ดลับการเพิ่มประสิทธิภาพบิลด์เพิ่มเติม (โฟกัสที่ Windows)
- ETW: ค้นหาวิธีค้นหาปัญหาด้านประสิทธิภาพของ Windows ใน Chrome หรือในบิลด์ โดยอ่านเอกสาร ETW (หรือที่เรียกว่า Xperf)