Customer Cases
Pricing

How to Enhance Your Performance Testing with PerfDog Custom Data Extension

Discover how to integrate PerfDog Custom Data Extension into your project for more accurate and convenient performance testing and analysis.
 

Introduction

To address performance issues more effectively, PerfDog now supports real-time synchronization of custom performance-related data. This feature enables data display, storage, and comparison, allowing you to add labels and comments directly to your code. With PerfDog Custom Data Extension, you can synchronize detailed data, such as vertex or texture, memory usage, DrawCall, Triangle, network conditions, and more. Additionally, you can store logical data, such as scene, coordinates, orientation, number of monsters or characters, and particle effects, to facilitate scene reproduction and analysis.

 

Follow the steps below to integrate PerfDog Custom Data Extension into your project.

Integrating PerfDogExtension

1. Add PerfDog source files to your project

Download the perfdog_extension.h and perfdog_extension.cpp source files provided by PerfDog from Github and add them to your project.

2. Enable PerfDog custom data expansion

Call the int EnableSendToPerfDog() interface after your game starts to enable PerfDog custom data expansion. This interface creates a socket and listens on port 53000.

3. Send custom data

PerfDog Custom Data Extension supports sending floating-point numbers, integers, and strings, with one key corresponding to one to three values. Use the following functions to send custom data:

a. Floating-point numbers

void PostValueF(const std::string& category, const std::string& key, float a);
void PostValueF(const std::string& category, const std::string& key, float a, float b);
void PostValueF(const std::string& category, const std::string& key, float a, float b, float c);

b. Integers

void PostValueI(const std::string& category, const std::string& key, int a);
void PostValueI(const std::string& category, const std::string& key, int a, int b);
void PostValueI(const std::string& category, const std::string& key, int a, int b, int c);

 

c. Strings

void PostValueS(const std::string& category, const std::string& key, const std::string& value);

 

d. Set scene label

void setLabel(const std::string& name);

 

e. Add tag

void addNote(const std::string& name);

 

After receiving the data, the client will organize all data with the same category into a table, with the title as the category and the line name as the key. If there are multiple values, the line names will be key_a, key_b, key_c.

 

4. Disable PerfDogExtension

To disable the PerfDogExtension, comment the code in the frame in perfdog_extension.h.

 

Known Issues

● On macOS, iOS devices cannot obtain custom data in Wi-Fi mode.

Performance Testing

Test environment: Pixel 3, small core locked at 1766MHz, test program bound to small core.

Test results: When PostValueI is called 20,000 times per second, the CPU usage is 1% to 2%.

Troubleshooting

● Android: Use adb logcat to check the phone log and search for "PerfDogExtension". For example, the error log for an occupied port:

 

dres2022-07-27 17:15:29.495 8680-8682/? E/PerfDogExtension: bind:Ads already in use

 

● iOS: Use the console on macOS to view phone logs and search for "PerfDogExtension".

In Conclusion

Integrating PerfDog Custom Data Extension into your project can significantly improve your performance testing and analysis capabilities. By following the steps outlined in this guide, you can easily enable real-time synchronization of custom performance-related data, allowing for more accurate and convenient testing. With support for various data types, scene labels, and tags, PerfDog Custom Data Extension is a powerful tool for developers seeking to optimize their applications and games. Don't let performance issues hinder your project's success – harness the power of PerfDog Custom Data Extension today.

PD网络测试推广
Latest Posts
1Intelligent Testing System: Enterprise Implementation Path & Trends 2026 A complete guide to intelligent testing system, covering 5-layer architecture, 4 core modules, enterprise implementation path, team building & real cases for quality, efficiency & cost reduction.
2Shift Left Testing & Shift Right Testing: Building a Full-Lifecycle Quality Assurance System Discover the core principles, implementation practices, and enterprise case studies of Shift Left Testing and Shift Right Testing. Learn how to build a full-lifecycle intelligent quality assurance system to reduce defects and ensure production stability.
3Low-Code/No-Code Testing Platform Practices: Mabl, Testim, Applitools Guide Explore low-code/no-code testing practices with Mabl, Testim, Applitools. Learn core concepts, practical operations, enterprise implementation strategies, and how to improve testing efficiency significantly.
4Cloud-Native Testing: Strategies for Containerized & Distributed Environments Cloud-native testing guide for testers: Learn container (Docker) & microservice testing strategies, tools (Sentinel, SkyWalking), real cases, and pitfalls to ensure distributed system stability in 2026.
5AI-Driven Testing: From Test Case Generation to Visual Self-Healing Automation | 2026 Guide Discover how AI-driven testing transforms software QA. This comprehensive guide covers AI test case generation, visual test automation, and visual self-healing — with tool recommendations (TestGPT, Applitools, Testim) and practical steps to reduce maintenance costs by up to 90%.