On Friday, March 25, 2022, at 9 PM, “The Performance” Knowledge Planet held its first online “Tea Talk.” We were joined by 3 planet hosts, 5 guest experts, and over 50 members. Thank you all for coming!
We had no set topic and expected to finish in an hour. We ended up talking for two and a half hours; introductions alone took an hour! We had talked plenty in the group and on Knowledge Planet, but this was our first voice chat together. People worked across the Android ecosystem, from app companies and phone manufacturers to chip companies and EV startups. Someone would mention their work, someone else would ask a question, and off we went.
At the time, we planned to hold more sessions with clearer themes and more guests, on topics beyond technology too. We did not record this session to protect participants’ privacy. The notes below reconstruct part of the conversation without including private details.
Technical review — 2026-10-14: This is a historical record of the 2022 discussion. Career advice and personal experience are retained. Updates below address log sharing, GPU tools and APIs, resource versions, and broken links. Event plans and community invitations describe the period when this was written.
On Career Development
“I’m a new grad and the vastness of the performance field is overwhelming.”
- Shift Your Mindset: University and professional work are different. In school, you have a textbook and a final exam. In the field, the “curriculum” never ends.
- Learn from What’s at Hand: Master the problems on your desk first. Aim for 100% or even 110% proficiency in your daily tasks while building a foundation for broader knowledge. Doing your current job exceptionally well earns you the reputation and the opportunity to touch new, more complex things. Don’t jump to a new field until you’ve mastered (or explicitly rejected) your current one.
- Problem-Oriented Programming: Your boss pays you to solve problems. Put in enough work to solve them well, but also watch how much the next round of effort will buy you.
- Climbing the Mountain: If you only stare at the peak, you’ll feel defeated. Keep your head down, take one step at a time, and check your map (and current career path) occasionally.
“I just switched from App development to System Performance. Where do I start?”
- Follow Company Projects: If you have a mentor, follow them closely. This is the fastest way to learn.
- Self-Drive: Keep doing your current work well while learning things that help with it. As you become more capable, you can take more initiative; colleagues and managers are also more likely to support you and give you opportunities.
- Don’t Limit Yourself: Knowledge is interconnected. Don’t stay in your “one-acre plot.” Performance spans App, Framework, Kernel, and Hardware. Aim for a state of “knowing what you don’t know.” The worst state is “not knowing that you don’t know” and thinking there’s nothing left to optimize.
- Systematize Knowledge: Performance is a broad field. When analyzing problems, take notes, summarize, and categorize. Don’t expect instant mastery; it’s a marathon of accumulation.
- Leverage Resources: Use this community, engineering blogs from major tech companies, and technical papers. Ask questions, no matter how “basic” they seem.
On Asking Questions
- This community is a powerful platform, but its value depends on your ability to ask precise questions. Asking a good question is a technical skill in itself.
- Recommended Reading: How to Ask Questions?
- “A well-put question is half the solution.”
- Einstein once said: “If I had an hour to save the world, I would spend 55 minutes defining the problem and 5 minutes solving it.”
- Great questions inspire masters to teach. It is a bridge to the best minds.
- Use Google: The quality difference between Google and local search engines can be vast for niche technical issues. Don’t discriminate between Chinese and English resources—if it solves your problem, it’s a gold mine.
- Log Sharing:
- Minimize the capture and establish permission to share it. Package names are only one possible field; paths, URLs, application markers, log messages, and device identifiers may also matter. A private message does not authorize sharing unredacted data.
- Text logs can be processed in a copy using known fields, but search-and-replace may miss compressed or embedded data in Systrace HTML. Native Perfetto traces use protobuf, so they must not be edited as plain text; see the data model. Use a format-aware approach that preserves required relationships, then reopen and inspect the result. Replacing package names alone is not complete redaction.
- If permission or the shareable scope is unclear, describe a minimal reproduction and necessary aggregate information instead of sending confidential raw logs.
- The Perfect Feedback Loop: Ask a question -> Analyze together -> Try solutions -> Verify with data -> Share the result with the community.
On Interviews
It can be useful to talk to competitors or people in a new field from time to time, just to see what is happening outside your company. You do not have to be looking for another job, though if a good opportunity comes along, why not? The point is to stay competitive in the job market.
Distinguish between your profession and your job. “Software Engineer” is your profession; “Working on Module X at Company A” is your job. Recognizing this difference allows you to remain calm during corporate restructuring. Ideally, pursue a profession you find exciting, as you’ll spend most of your life doing it.
Finding a job that fits also takes luck. Many things affect an interview. If it goes badly, perhaps that particular job was not a match; it does not tell you everything about yourself.
On Corporate Environments
Different companies have different strategies based on their industry and competition. Your manager’s style and your colleagues’ expertise define your immediate environment.
Some organizations reward “top 5% technical excellence,” while others only care that “the bug is fixed” regardless of how. Understand the game you are playing. Either challenge the environment or adapt to it, but don’t fall into the trap of self-doubt.
On Learning New Tech
Different technology stacks can hide the same underlying performance problems. Try to understand what stays the same, then use that understanding to judge new techniques and find further improvements. Skimming the surface of every new technology is tiring, and you do not get much out of it.
Once you get far enough into optimization, you have to look below the application: compilers, hardware features, and how the hardware fits together. These directly affect how fast the program runs.
On GPU
GPU architectures: generations and vendors differ. These are historical learning materials, not current specifications for every desktop or mobile GPU.
- GPU Architectures: the old sharing page remains accessible, while full-file access depends on sharing permissions. It is not used here as a current hardware specification.
- Introduction to GPU Architecture: Caroline Collange’s course notes, whose title page says ADA 2019. Read hardware examples in that context.
- Introduction to Modern GPU Architecture: the old NVIDIA
TDCI_Arch.pdfURL now returns 404. The NVIDIA Ampere Tuning Guide is an available supplementary reference explicitly scoped to Ampere / CUDA, not general Android GPU advice. - Graphics and Computing GPUs: John Nickolls and David Kirk’s textbook appendix includes GeForce 8800-era examples.
- GPU Architecture and Function: the original RIT endpoint timed out during this review and is not presented as a working download. A timeout does not establish permanent closure.
Mobile graphics hardware book: Mobile 3D Graphics SoC: From Algorithm to Chip, by Jeong-Ho Woo, Ju-Ho Sohn, Byeong-Gyu Nam, and Hoi-Jun Yoo, was published by Wiley in 2010. Use publisher or library access. It describes historical algorithm-to-chip design, not current product specifications.
Implementations and articles: I could no longer find many of the GPU posts I remembered, so these are the ones I could track down:
- Historical article recommendations include a GPU architecture article series and tile-based performance notes. They are historical reading suggestions; check technical conclusions against the target GPU and driver.
- SwiftShader currently describes a CPU-based Vulkan 1.3 implementation. ANGLE can layer OpenGL ES 3.1 on it as SwANGLE. This is not a direct desktop OpenGL 3.0 implementation. Check the branch when reading AOSP’s historical
external/swiftshadertree. Software rendering helps explain API implementation but does not reproduce a hardware GPU’s microarchitecture or performance. - Mesa’s official source instructions point to freedesktop.org GitLab; the old
github.com/mesa3d/mesaaddress returns 404. Read the specific driver, API, and hardware backend rather than treating one implementation as universal.
Starting with OpenGL or Vulkan: starting with OpenGL was my personal learning preference. Graphics fundamentals transfer, but resource, synchronization, and state-management models differ. OpenGL is not a mandatory prerequisite: the current Khronos tutorial expects graphics fundamentals without assuming prior OpenGL knowledge. If you already know some OpenGL, here is how I learned Vulkan. It may not be the best route; treat it as one person’s experience.
- I used the original Vulkan Tutorial to work through basic examples, such as drawing a triangle. It now warns that it was written for the early 2016 API and no longer represents current recommended practice. New learners can use the Khronos Vulkan Tutorial and Vulkan Guide. Check API, binding, and SDK versions before mixing examples.
- Vulkan Programming Guide, by Graham Sellers and John Kessenich, is an Addison-Wesley 2016 first edition. It is historical study material, not a replacement for the current specification. I read it to get familiar with the APIs. It felt like a bare API walkthrough, with little explanation of why things worked that way.
- Learning Vulkan, by Parminder Singh, is a Packt 2016 first edition. I read the Chinese translation on WeChat Read and did not think much of the translation. If you can, read the English edition. I found its explanations of rendering flow and principles useful, but for fuller API coverage I would read it alongside Vulkan Programming Guide.
- Wu Yafeng’s Vulkan开发实战详解, ISBN 9787115509390, is the book I used when I wanted to move from introductory reading to writing code. I did not think it was particularly good. I picked it up because I had read the author’s OpenGL book at university; this one felt like a direct adaptation, and the explanations were rather dry. These are my experiences with the books at the time, not new evaluations of their current usefulness.
Why Vulkan? Apple’s Bringing OpenGL Apps to Metal (WWDC 2019) illustrates reducing implicit driver work and managing resources explicitly. Metal and Vulkan are different APIs, however: do not substitute Metal examples for Vulkan or assume both share a Mantle origin. Their object models, synchronization, and shader toolchains need separate study. MoltenVK is a layered Vulkan-on-Metal implementation with capability and portability limits.
Final Tip: Learning graphics and GPU internal counters is a marathon. Be patient and keep practicing. The old DS-5 reference should now lead readers to Streamline in Arm Performance Studio; Snapdragon Profiler is another platform-specific tool. Counter availability depends on GPU, driver, OS, and permissions. Software-renderer measurements do not substitute for hardware GPU measurements.
Recommended Resources
Articles
- “Ten-Year Founder Shares Thoughts on Hiring”: categorizes talent into S, A, B, and C tiers. Worth reflecting on which tier you occupy. The original document now requires sign-in and appropriate access.
Books
- “The Self-Cultivation of a Programmer” (俞甲子 / 石凡 / 潘爱民): Deep dive into compilation, linking, and runtime mechanics.
- “Software Debugging (2nd Ed)” (张银奎): The “Encyclopedia” of debugging.
- Vol 1: Hardware Foundations (CPU/GPU/Debug infrastructure).
- Vol 2: Windows Platform.
- Vol 3: Linux Platform was a publication expectation mentioned in 2022. This review did not verify an author or publisher announcement that the volume has been published, so it is not presented as current “upcoming” news. The earlier book summaries describe the editions discussed at the time; consult version-matched documentation for actual tool use.
About The Performance Community
“The Performance” was a Knowledge Planet community run by three engineers working on performance at major phone manufacturers. We shared methods, tools, and case studies from Android performance work. The paid community stopped operating in 2026 and no longer accepts new members; this section records what it was like at the time.
About Me && Blog
Below is my personal intro and related links. I look forward to exchanging ideas with fellow professionals. “When three walk together, one can always be my teacher!”
- Blogger Intro
- Blog Content Navigation: A guide for my blog content.
- Curated Excellent Blog Articles - Android Performance Optimization Must-Knows
- Android Performance Optimization Knowledge Planet: The paid community stopped operating in 2026 and no longer accepts new members; this link preserves its history.
One walks faster alone, but a group walks further together.
