1. Avoid Premature Optimization
Main maxims:
- Performance is often sacrificed in the name of unnecessary optimizations.
- Premature optimization is considered the "root of all evil" in programming.
The recommended rules are:
- Rule 1: Don’t optimize.
- Rule 2: Only optimize when the need is clear and unavoidable.
2. Focus on Clear and Correct Code Architecture
- Initial objective: Create well-structured, maintainable programs before focusing on performance.
- If the architectural foundation is solid, optimizations can be added later without compromising the integrity of the code.
- Encapsulation: Use information hiding to isolate design choices, facilitating local changes and improvements without impacting the system as a whole.
3. Consider Performance in Initial Design, but Avoid Premature Commitments
- During design, avoid choices that restrict future performance, especially in:
- APIs: Ensure that critical methods do not add performance penalties, such as creating unnecessary objects.
- Persistent data formatting: Choose data formats that allow for flexibility and efficiency.
- Example of inefficient API: The getSize method of the java.awt.Component class returns a mutable Dimension object, requiring unnecessary allocations and impacting performance.
4. Evaluate Performance with Appropriate Tools (Profiling and Benchmarking)
- Profilers: Use profiling tools to identify where the program consumes the most time, avoiding optimizing parts that are not the real bottleneck.
- Example tool: jmh (Java Microbenchmark Harness) is recommended for detailed performance micro-benchmarking in Java.
- Profiling helps identify inefficient algorithms (e.g. quadratic) that should be replaced with more efficient algorithms before focusing on low-level improvements.
5. Consider Portability and Performance Variability in Different
- Implementations and Hardware
- Performance in Java can vary widely between JVM versions, hardware platforms, and configurations.
- It is important to check optimizations across all target platforms to ensure consistency of performance.
6. Post-Development Optimization Process
Recommended steps:
- Finalize the design and implement a clear and concise version of the program.
- Evaluate overall performance. If necessary, locate and optimize the areas that most affect performance.
- Prioritize the choice of efficient algorithms; an inappropriate choice of algorithm is not resolved with low-level optimizations.
- Measure performance after each adjustment to confirm positive impact.
Final Summary
- Best practice: Focus on writing quality code, as good design is generally compatible with efficient performance.
- Constant evaluation: Always measure the impact of optimizations on performance.
- General example: When critical methods impact efficiency due to unnecessary objects, consider alternatives such as immutable types or methods that return primitive values instead of objects, reducing allocations and making the program faster and more efficient.
The above is the detailed content of Item Be careful when optimizing. For more information, please follow other related articles on the PHP Chinese website!