Skip to content
Search

Program optimization

lastmod 2025-11-17created 2016-09-0371 edits

Program optimization, or software optimization, in information engineering refers to modifying a system so that some aspect of it works more efficiently or uses fewer resources. For example, a computer program can be optimized so that it runs faster, operates using less memory or other resources, or consumes less power. Such a system can be a single computer program, a collection of computers, or a complete network such as the Internet.

Performance Tuning

Performance tuning is the improvement of system performance. This is typically a computer application, but the same methods can be applied to economic markets, bureaucracies or other complex systems. The motivation for such activity is called a performance problem, which can be real or anticipated. Most systems will respond to increased load with some degree of decreasing performance. A system's ability to accept higher load is called scalability, and modifying a system to handle a higher load is synonymous to performance tuning.

Systematic tuning follows these steps:

  1. Assess the problem and establish numeric values that categorize acceptable behavior.
  2. Measure the performance of the system before modification.
  3. Identify the part of the system that is critical for improving the performance. This is called the bottleneck.
  4. Modify that part of the system to remove the bottleneck.
  5. Measure the performance of the system after modification.
  6. If the modification makes the performance better, adopt it. If the modification makes the performance worse, put it back the way it was.

This is an instance of the measure-evaluate-improve-learn cycle from quality assurance.

A performance problem may be identified by slow or unresponsive systems. This usually occurs because high system loading, causing some part of the system to reach a limit in its ability to respond. This limit within the system is referred to as a bottleneck.

A handful of techniques are used to improve performance. Among them are code optimization, load balancing, caching strategy, distributed computing and self-tuning.

Compiler

Memory

Hardware

CPU

Korean: 동기화 (Synchronization)

Process/Thread

  • Multi-process
  • Multi-threaded
  • Green threads
  • User level scheduling
  • Work-stealing queue
  • thread pool design
  • Coroutine
  • Async-await

Networking

TCP tuning

Load Balancing

  • L4/L7 load balancing
  • Consistent hashing
  • Distributed systems
  • Connection pooling
  • keep-alive

High Performance Browser Networking

Performance is a feature. This book provides a hands-on overview of what every web developer needs to know about the various types of networks (WiFi, 3G/4G), transport protocols (UDP, TCP, and TLS), application protocols (HTTP/1.1, HTTP/2), and APIs available in the browser (XHR, WebSocket, WebRTC, and more) to deliver the best—fast, reliable, and resilient—user experience.

HTTP/Web

Network topology

Filesystem

Programming language

Database

Scalability and architecture

Horizontal/vertical scaling

  • Stateless service design principles
  • Session clustering and distributed caches
  • Service mesh and microservice patterns
  • Event-driven architecture and message queues

Distributed systems

  • CAP theorem and consistency models
  • Consensus algorithms (Raft, Paxos)
  • Distributed tracing and observability
  • Circuit breaker and bulkhead patterns

Monitoring and performance optimization

System metrics

  • Difference between CPU utilization and load average
  • Context switch rate and run queue depth
  • Memory bandwidth and saturation
  • Disk I/O patterns (sequential vs random)

Profiling

  • Analyzing CPU bottlenecks with flame graphs
  • Memory profiling (heap, leak detection)
  • Using low-level tools such as perf and eBPF
  • Application Performance Monitoring (APM)

Performance tuning

  • Amdahl's law and the limits of parallelization
  • Latency percentiles (p50, p95, p99)
  • Queueing theory and Little's law
  • Batch processing vs Streaming tradeoffs

Security and privileges

  • Rate limiting and DDoS defense
  • TLS/SSL performance optimization
  • JWT vs session-based authentication
  • Container security and privilege escalation
  • Filesystem in Userspace (FUSE)

Stability

  • Graceful shutdown and zero-downtime deployment
  • Health check and readiness probe design
  • Chaos engineering principles
  • Backup and disaster recovery strategies

See also

Favorite site

References


  1. Handling_traffic_on_the_Naver_main_page.pdf ↩

  2. How-to-check-single-server-load-average.pdf ↩

author Zer0 sitemap