ไลบรารีของไคลเอ็นต์ Google Ads .NET ช่วยลดความซับซ้อนในการโต้ตอบของแอปกับ 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 ทั้งนี้ขึ้นอยู่กับ
แอปของคุณ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มประสิทธิภาพนี้ได้ที่
Search เทียบกับ
SearchStream
จัดการการรีเฟรชโทเค็นเพื่อการเข้าถึงด้วยตนเอง
ในบางสภาพแวดล้อม เช่น Google Cloud
Functions การใช้อินสแตนซ์
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 มี เครื่องมือการวินิจฉัยที่จะช่วยทำโปรไฟล์แอป นอกจากนี้ยังมี เครื่องมือการทำโปรไฟล์เชิงพาณิชย์อื่นๆ ที่ ให้เลือกใช้ด้วย
ใช้วิธีการแบบไม่พร้อมกัน
การยกเลิกวิธีการแบบไม่พร้อมกัน
คุณสามารถใช้พารามิเตอร์ callSettings เพื่อส่ง
CancellationToken
ไปยังวิธีการแบบไม่พร้อมกันได้ดังนี้
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(3000);
CallSettings callSettings = CallSettings.FromCancellationToken(cancellationTokenSource.Token);
string query = "SELECT campaign.name FROM campaign";
var request = new SearchGoogleAdsStreamRequest()
{
CustomerId = customerId.ToString(),
Query = query,
};
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V25.GoogleAdsService);
googleAdsService.SearchStream(request,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
// Process the row.
}
}, callSettings
);
ปิดการบันทึกเมื่อทำได้
ไลบรารี Google Ads .NET จะปิดการบันทึกโดยค่าเริ่มต้นและใช้แนวทางการบันทึกแบบเลื่อนออก ซึ่งจะช่วยให้แอปมีประสิทธิภาพที่ดีขึ้น หากเปิดการบันทึก โปรดตรวจสอบว่าได้ปิดการบันทึกในสภาพแวดล้อมฮาร์ดแวร์และซอฟต์แวร์ หากต้องการตรวจสอบคำขอที่ล้มเหลวที่เฉพาะเจาะจงในสภาพแวดล้อมที่ใช้งานจริง คุณสามารถทำตามขั้นตอนต่อไปนี้อย่างน้อย 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 นี้มีข้อดีข้อเสียด้านประสิทธิภาพ ที่แตกต่างกัน แอปที่ใช้ไลบรารี Google Ads .NET มักจะมีประสิทธิภาพดีกว่าเมื่อทำงานในโปรไฟล์เซิร์ฟเวอร์ คุณจะได้รับประโยชน์จากการปรับแต่งการตั้งค่า GC ต่อไปนี้
ระบบจัดการหน่วยความจำที่ไม่ใช้แล้วของเซิร์ฟเวอร์: ระบบจัดการหน่วยความจำที่ไม่ใช้แล้วของเซิร์ฟเวอร์ช่วยให้รันไทม์ .NET มอบประสิทธิภาพที่ดีขึ้นให้กับแอป Google Ads API โดยการทำงานในหลายเทรด ดูรายละเอียดเพิ่มเติมได้ในคู่มือนี้ คุณสามารถเปิดระบบจัดการหน่วยความจำที่ไม่ใช้แล้วของเซิร์ฟเวอร์ได้โดยการเพิ่มบรรทัดต่อไปนี้ลงในไฟล์
.csprojของแอป<PropertyGroup> <ServerGarbageCollection>true</ServerGarbageCollection> </PropertyGroup>ระบบจัดการหน่วยความจำที่ไม่ใช้แล้วแบบพร้อมกัน: คุณสามารถเปิดระบบจัดการหน่วยความจำที่ไม่ใช้แล้วแบบพร้อมกัน เพื่อให้ GC ของ .NET มีเทรดเฉพาะสำหรับการจัดการหน่วยความจำที่ไม่ใช้แล้วในรุ่นที่ 2 การตั้งค่านี้มีประโยชน์เมื่อประมวลผลรายงานที่มีขนาดใหญ่ คุณสามารถเปิดระบบจัดการหน่วยความจำที่ไม่ใช้แล้วแบบพร้อมกันได้โดยการเพิ่มบรรทัดต่อไปนี้ลงในไฟล์
.csprojของแอป<PropertyGroup> <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> </PropertyGroup>เก็บรักษาการจัดการหน่วยความจำที่ไม่ใช้แล้วของ VM: การ
RetainVMGarbageCollectionตั้งค่า จะกำหนดว่าส่วนของหน่วยความจำเสมือนที่ควรลบจะถูกนำไปไว้ ในรายการสแตนด์บายเพื่อใช้ในอนาคต หรือจะส่งคืนไปยังระบบปฏิบัติการ (OS) คุณสามารถเปิดการเก็บรักษาหน่วยความจำเสมือนได้โดยการเพิ่มบรรทัดต่อไปนี้ลงในแอป<PropertyGroup> <RetainVMGarbageCollection>true</RetainVMGarbageCollection> </PropertyGroup>
คุณสามารถปรับแต่ง GC ได้โดยเลือกการตั้งค่าที่อยู่ระหว่างเวิร์กสเตชันกับเซิร์ฟเวอร์ การตั้งค่าที่เกี่ยวข้องทั้งหมดจะระบุไว้ในไฟล์ runtimeconfig.json ของแอป .NET Core, ตัวแปรสภาพแวดล้อม หรือ App.config ของแอป .NET SDK