ประสิทธิภาพของแอปพลิเคชัน

ไลบรารีของไคลเอ็นต์ .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