Computer performance
≈ 5 min read
Names in other languages
No names in other languages are held for this entry yet.
Article bodies are English and are not machine-translated. A name in another language is not a translation of the article.
In computing, computer performance is the amount of useful work accomplished by a computer system. Outside specific contexts, computer performance is estimated in terms of accuracy, efficiency and speed of executing computer program instructions. When it comes to high computer performance, one or more of the following factors might be involved: * Short response time for a given piece of work. * High throughput (rate of processing work tasks). * Low utilization of computing resources. ** Fast (or highly compact) data compression and decompression. * High availability of the computing system or application. * High bandwidth. * Short data transmission time.
In computing, computer performance is the amount of useful work accomplished by a computer system. Outside specific contexts, computer performance is estimated in terms of accuracy, efficiency and speed of executing computer program instructions. When it comes to high computer performance, one or more of the following factors might be involved: Short response time for a given piece of work. High throughput (rate of processing work tasks). Low utilization of computing resources. Fast (or highly compact) data compression and decompression. High availability of the computing system or application. High bandwidth. Short data transmission time. ==Technical and non-technical definitions== The performance of any computer system can be evaluated in measurable, technical terms, using one or more of the metrics listed above. This way the performance can be Compared relative to other systems or the same system before/after changes In absolute terms, e.g. for fulfilling a contractual obligation Whilst the above definition relates to a scientific, technical approach, the following definition given by Arnold Allen would be useful for a non-technical audience: The word performance in computer performance means the same thing that performance means in other contexts, that is, it means "How well is the computer doing the work it is supposed to do?" ===As an aspect of software quality=== Computer software performance, particularly software application response time, is an aspect of software quality that is important in human–computer interactions. === Profiling (performance analysis)=== In software engineering, profiling ("program profiling", "software profiling") is a form of dynamic program analysis that measures, for example, the space (memory) or time complexity of a program, the usage of particular instructions, or frequency and duration of function calls. The most common use of profiling information is to aid program optimization. Profiling is achieved by instrumenting either the program source code or its binary executable form using a tool called a profiler (or code profiler). A number of different techniques may be used by profilers, such as event-based, statistical, instrumented, and simulation methods. t=\tfrac{NC}{f} , or equivalently P=\tfrac{If}{N} where P = \frac{1}{t} is "the performance" in terms of time-to-execute N is the number of instructions actually executed (the instruction path length). The code density of the instruction set strongly affects N. The value of N can either be determined exactly by using an instruction set simulator (if available) or by estimation—itself based partly on estimated or actual frequency distribution of input variables and by examining generated machine code from an HLL compiler. It cannot be determined from the number of lines of HLL source code. N is not affected by other processes running on the same processor. The significant point here is that hardware normally does not keep track of (or at least make easily available) a value of N for executed programs. The value can therefore only be accurately determined by instruction set simulation, which is rarely practiced. f is the clock frequency in cycles per second. C = \frac{1}{I} is the average cycles per instruction (CPI) for this benchmark. I = \frac{1}{C} is the average instructions per cycle (IPC) for this benchmark. Even on one machine, a different compiler or the same compiler with different compiler optimization switches can change N and CPI—the benchmark executes faster if the new compiler can improve N or C without making the other worse, but often there is a trade-off between them—is it better, for example, to use a few complicated instructions that take a long time to execute, or to use instructions that execute very quickly, although it takes more of them to execute the benchmark? A CPU designer is often required to implement a particular instruction set, and so cannot change N. Sometimes a designer focuses on improving performance by making significant improvements in f (with techniques such as deeper pipelines and faster caches), while (hopefully) not sacrificing too much C—leading to a speed-demon CPU design. Sometimes a designer focuses on improving performance by making significant improvements in CPI (with techniques such as out-of-order execution, superscalar CPUs, larger caches, caches with improved hit rates, improved branch prediction, speculative execution, etc.), while (hopefully) not sacrificing too much clock frequency—leading to a brainiac CPU design. For a given instruction set (and therefore fixed N) and semiconductor process, the maximum single-thread performance (1/t) requires a balance between brainiac techniques and speedracer techniques. ==See also== Algorithmic efficiency Compute (machine learning) Computer performance by orders of magnitude Network performance Latency oriented processor architecture Optimization (computer science) RAM update rate Complete instruction set Hardware acceleration Speedup Cache replacement policies Relative efficiency ==References==
Text derived from https://en.wikipedia.org/w/index.php?oldid=1365933703 under CC BY-SA 4.0; modifications have been made.