ไลบรารีของไคลเอ็นต์ .NET ของ Google Ads ช่วยลดความซับซ้อนในการโต้ตอบกับแอป Google Ads API โดยใช้การกำหนดค่าน้อยที่สุด อย่างไรก็ตาม ประสิทธิภาพโดยรวมจะขึ้นอยู่กับวิธีการใช้และผสานรวมไลบรารีกับแอป
คู่มือนี้ครอบคลุมการเพิ่มประสิทธิภาพที่มีไว้สําหรับแอป .NET โดยเฉพาะ และเสริมแนวทางปฏิบัติที่ดีที่สุดที่ใช้ได้กับ Google Ads API
ใช้ GoogleAdsClient ซ้ำหากเป็นไปได้
GoogleAdsClient
แสดงเซสชันของผู้ใช้เมื่อเรียก API ช่วยเพิ่มประสิทธิภาพ เช่น
- การแคชแชแนล gRPC ที่ใช้โดยบริการ API ซึ่งจะลดเวลาในการตั้งค่าเมื่อเรียก API ครั้งแรก
- การใช้โทเค็นเพื่อการเข้าถึงซ้ำ หากเป็นไปได้ วิธีนี้จะลดจำนวนการเดินทางไป-กลับที่ไลบรารีของไคลเอ็นต์ Google Ads .NET จะต้องดำเนินการเพื่อรีเฟรชโทเค็นเพื่อการเข้าถึง
ใช้โทเค็นเพื่อการเข้าถึงจากบัญชีดูแลจัดการ หากเป็นไปได้
- หากคุณมีโทเค็นเพื่อการเข้าถึงที่ออกในระดับบัญชีดูแลจัดการ คุณจะใช้โทเค็นดังกล่าวเพื่อเรียกใช้ API กับบัญชีลูกค้า Google Ads ทั้งหมดภายใต้ลําดับชั้นบัญชีได้ เมื่อรวมกับการใช้อินสแตนซ์
GoogleAdsClient
ซ้ำ จะเป็นการลดจำนวนการเดินทางไป-กลับที่ไลบรารีของไคลเอ็นต์ต้องทำเพื่อรีเฟรชโทเค็นเพื่อการเข้าถึง
ใช้ SearchStream แทน Search ทุกครั้งที่ทำได้
แม้ว่า GoogleAdsService.Search
จะส่งคำขอที่ใส่เลขหน้าหลายรายการเพื่อดาวน์โหลดทั้งรายงานได้ แต่GoogleAdsService.SearchStream
จะส่งคำขอเดียวและเริ่มการเชื่อมต่อถาวรกับ Google Ads API โดยไม่คำนึงถึงขนาดรายงาน SearchStream
อาจให้ประสิทธิภาพที่ดีขึ้นมากกว่าการแบ่งหน้าด้วยการขจัดเวลาของเครือข่ายแบบไป-กลับที่ใช้ในการขอการตอบกลับจาก Search
แต่ละหน้า ซึ่งจะขึ้นอยู่กับแอปของคุณ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพนี้ได้ที่การค้นหากับ SearchStream
จัดการการรีเฟรชโทเค็นเพื่อการเข้าถึงด้วยตนเอง
ในบางสภาพแวดล้อม เช่น ฟังก์ชัน Google Cloud อาจใช้อินสแตนซ์ GoogleAdsClient
ซ้ำไม่ได้ สภาพแวดล้อมดังกล่าวอาจมีแนวทางปฏิบัติแนะนำในตัวเพื่อคงข้อมูลไว้และใช้ซ้ำได้ ในกรณีดังกล่าว คุณสามารถขยายคลาส GoogleAdsConfig
เพื่อรีเฟรชโทเค็นเพื่อการเข้าถึงของคุณเองได้ดังนี้
// Create your own config class by extending the GoogleAdsConfig class.
class MyGoogleAdsConfig : GoogleAdsConfig
{
public MyGoogleAdsConfig() : base()
{
// Disable the library's in-built channel caching mechanism.
this.UseChannelCache = false;
}
protected override ICredential CreateCredentials()
{
// TODO: Create your own ICredentials object here. You may refer to the
// default implementation of GoogleAdsConfig::CreateCreateCredentials
// for an example.
}
}
// Use your own config class when initializing the GoogleAdsClient instance.
MyGoogleAdsConfig myconfig = new MyGoogleAdsConfig();
GoogleAdsClient client = new GoogleAdsClient(myconfig);
คอมไพล์สำหรับบิลด์ของรุ่น
ตรวจสอบว่าคอมไพล์แอปโดยใช้การกำหนดค่ารุ่นเมื่อทำให้ใช้งานได้ในเซิร์ฟเวอร์ เมื่อใช้การกำหนดค่าการแก้ไขข้อบกพร่อง แอปจะรวบรวมข้อมูลการแก้ไขข้อบกพร่องเชิงสัญลักษณ์แบบเต็มและไม่มีการเพิ่มประสิทธิภาพ
ทำโปรไฟล์แอป
ทำโปรไฟล์แอปทั้งการใช้งาน CPU และหน่วยความจำเพื่อระบุจุดคอขวดด้านประสิทธิภาพ Visual Studio มี เครื่องมือวินิจฉัย เพื่อช่วยทำโปรไฟล์แอป นอกจากนี้ยังมีเครื่องมือทำโปรไฟล์เชิงพาณิชย์ อื่นๆ ที่พร้อมใช้งานด้วย
ใช้วิธีการที่ไม่พร้อมกัน
การเขียนโปรแกรมอะซิงโครนัสโดยใช้กระบวนทัศน์แบบไม่พร้อมกันช่วยหลีกเลี่ยงจุดคอขวดด้านประสิทธิภาพและปรับปรุงการตอบสนองโดยรวมของแอป ไลบรารีของ Google Ads .NET จะสร้างเมธอดแบบไม่พร้อมกันสำหรับบริการทั้งหมดและเมธอด RPC
ปิดการบันทึกเมื่อทำได้
ไลบรารี .NET ของ Google Ads จะปิดการบันทึกโดยค่าเริ่มต้นและใช้วิธีการบันทึกแบบ Lazy Loading ซึ่งช่วยให้แอปมีประสิทธิภาพดีขึ้น หากเปิดการบันทึกไว้ โปรดปิดสภาพแวดล้อมการใช้งานจริง หากต้องการตรวจสอบคำขอที่ล้มเหลวในเวอร์ชันที่ใช้งานจริง คุณจะทำตามขั้นตอนต่อไปนี้อย่างน้อย 1 ขั้นตอนโดยไม่ส่งผลเสียต่อประสิทธิภาพของแอป
- เปิดใช้เฉพาะบันทึกสรุป
- ตั้งค่าบันทึกแบบเต็มเป็นระดับ
ERROR
- บันทึกรหัสคำขอของคำขอความสนใจที่เจาะจงซึ่งคุณแชร์กับช่องทางการสนับสนุนได้
โปรดดูข้อมูลเพิ่มเติมในคำแนะนำในการบันทึก
เลือกว่าจะใช้เมธอด SearchStream หรือ Search
Google Ads API มี 2 วิธีหลักในการดึงข้อมูลออบเจ็กต์ ได้แก่ เมธอด Search
(ซึ่งใช้การใส่เลขหน้า) และ SearchStream
(ซึ่งใช้สตรีมมิง)
SearchStream
ให้ประสิทธิภาพที่ดีกว่า Search
แต่มีบางสถานการณ์ที่แนะนำให้ใช้ Search
ดูคู่มือรายงานสตรีมมิงเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับทั้ง 2 วิธี
ใช้ตัวเลือก ReadyToRun
.NET Core 3.1 เพิ่มการรองรับการคอมไพล์ไบนารีไปยังแพลตฟอร์มและสถาปัตยกรรมเฉพาะโดยการระบุการตั้งค่า PublishReadyToRun
เป็น true
แล้วเผยแพร่ไบนารีโดยระบุ RuntimeIdentifier
ที่ถูกต้องเมื่อเผยแพร่ ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับฟีเจอร์ ReadyToRun
ใช้ TieredCompilation
TieredCompilation
อนุญาตให้ .NET ระบุฮอตสปอตและปรับปรุงประสิทธิภาพได้ การคอมไพล์แบบเป็นชั้นจะทำงานได้ดีขึ้นเมื่อใช้กับตัวเลือก ReadyToRun
เนื่องจากสามารถใช้รูปภาพที่สร้างขึ้นล่วงหน้าได้ หากมี ดูข้อมูลเพิ่มเติมได้ที่คำแนะนำเกี่ยวกับ TieredCompilation
ปรับแต่งระบบจัดเก็บขยะ (GC)
.NET มีโปรไฟล์ทั่วไป 2 โปรไฟล์สำหรับการเก็บรวบรวมข้อมูลขยะ (GC) ได้แก่ โปรไฟล์เวิร์กสเตชันและโปรไฟล์เซิร์ฟเวอร์ โปรไฟล์ 2 รายการนี้มีข้อได้เปรียบด้านประสิทธิภาพที่ต่างกัน แอปที่ใช้ไลบรารี .NET ของ Google Ads มีแนวโน้มที่จะทำงานได้ดีกว่าเมื่อทำงานในโปรไฟล์เซิร์ฟเวอร์ คุณจะได้รับประโยชน์จากการปรับแต่งการตั้งค่า GC ต่อไปนี้
การเก็บรวบรวมข้อมูลขยะของเซิร์ฟเวอร์: การรวบรวมข้อมูลขยะของเซิร์ฟเวอร์ช่วยให้รันไทม์ของ .NET มอบประสิทธิภาพที่ดีขึ้นแก่แอป Google Ads API ด้วยการดําเนินการกับเทรดหลายรายการ ดูรายละเอียดเพิ่มเติมได้ในคู่มือนี้ คุณสามารถเปิดการรวบรวมขยะของเซิร์ฟเวอร์ได้โดยเพิ่มบรรทัดต่อไปนี้ลงในไฟล์
.csproj
ของแอป<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>
การเก็บรวบรวมขยะพร้อมกัน: คุณเปิดการรวบรวมขยะพร้อมกันเพื่อให้ .NET GC สร้างชุดข้อความเฉพาะสําหรับการรวบรวมขยะในรุ่นที่ 2 ได้ การตั้งค่านี้จะมีประโยชน์เมื่อประมวลผลรายงานที่มีขนาดใหญ่ คุณเปิดการรวบรวมข้อมูลขยะพร้อมกันได้โดยเพิ่มบรรทัดต่อไปนี้ลงในไฟล์
.csproj
ของแอป<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>
เก็บรักษาการรวบรวมขยะ VM: การตั้งค่า
RetainVMGarbageCollection
จะกำหนดค่าว่าจะให้กลุ่มของหน่วยความจำเสมือนที่ควรลบอยู่ในรายการสแตนด์บายสำหรับการใช้งานในอนาคต หรือมีการปล่อยกลับไปยังระบบปฏิบัติการ (OS) หรือไม่ คุณสามารถเปิดการเก็บรักษาหน่วยความจำเสมือนได้ โดยการเพิ่มบรรทัดต่อไปนี้ลงในแอป<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
คุณปรับแต่ง GC ได้ด้วยการตั้งค่าระหว่างเวิร์กสเตชันกับเซิร์ฟเวอร์ การตั้งค่าที่เกี่ยวข้องทั้งหมดจะระบุอยู่ในไฟล์ runtimeconfig.json
ของแอป .NET Core, ตัวแปรสภาพแวดล้อม หรือApp.config
ของแอป .NET SDK