Knowledge (XXG)

Algorithmic efficiency

Source 📝

3504: 3241: 3251: 33: 3261: 3511: 424:"In almost every computation a great variety of arrangements for the succession of the processes is possible, and various considerations must influence the selections amongst them for the purposes of a calculating engine. One essential object is to choose that arrangement which shall tend to reduce to a minimum the time necessary for completing the calculation" 135: 1182:
is produced, for example, it can be compared with its predecessors to ensure that at least it is efficient as before with known data, taking into consideration any functional improvements. Benchmarks can be used by customers when comparing various products from alternative suppliers to estimate which
1895:
In the early days of electronic computing, if an algorithm and its data would not fit in main memory then the algorithm could not be used. Nowadays the use of virtual memory appears to provide much more memory, but at the cost of performance. Much higher speed can be obtained if an algorithm and its
526:
In practice, there are other factors which can affect the efficiency of an algorithm, such as requirements for accuracy and/or reliability. As detailed below, the way in which an algorithm is implemented can also have a significant effect on actual efficiency, though many aspects of this relate to
1892:. To further complicate the issue, some systems have up to three levels of cache memory, with varying effective speeds. Different systems will have different amounts of these various types of memory, so the effect of algorithm memory needs can vary greatly from one system to another. 1736:
Modern computers can have relatively large amounts of memory (possibly gigabytes), so having to squeeze an algorithm into a confined amount of memory is not the kind of problem it used to be. However, the different types of memory and their relative access speeds can be significant:
473:
An algorithm is considered efficient if its resource consumption, also known as computational cost, is at or below some acceptable level. Roughly speaking, 'acceptable' means: it will run in a reasonable amount of time or space on an available computer, typically as a
478:
of the size of the input. Since the 1950s computers have seen dramatic increases in both the available computational power and in the available amount of memory, so current acceptable levels would have been unacceptable even 10 years ago. In fact, thanks to the
1565:. This is useful for comparing algorithms, especially when a large amount of data is to be processed. More detailed estimates are needed to compare algorithm performance when the amount of data is small, although this is likely to be of less importance. 1436:: how much working memory (typically RAM) is needed by the algorithm? This has two aspects: the amount of memory needed by the code (auxiliary space usage), and the amount of memory needed for the data on which the code operates (intrinsic space usage). 1213:" benchmarks can demonstrate the relative performance of different programming languages, using a variety of user specified criteria. This is quite simple, as a "Nine language performance roundup" by Christopher W. Cowell-Shah demonstrates by example. 509:
There are many ways in which the resources used by an algorithm can be measured: the two most common measures are speed and memory usage; other measures could include transmission speed, temporary disk usage, long-term disk usage, power consumption,
1744:, are the fastest memory with the least amount of space. Most direct computation on modern computers occurs with source and destination operands in registers before being updated to the cache, main memory and virtual memory if needed. On a 1879:
An algorithm whose memory needs will fit in cache memory will be much faster than an algorithm which fits in main memory, which in turn will be very much faster than an algorithm which has to resort to paging. Because of this,
518:
to external stimuli, etc. Many of these measures depend on the size of the input to the algorithm, i.e. the amount of data to be processed. They might also depend on the way in which the data is arranged; for example, some
1516:: space needed on a disk or other external memory device; this could be for temporary storage while the algorithm is being carried out, or it could be long-term storage needed to be carried forward for future reference. 448:
could use a fast algorithm using a lot of memory, or it could use a slow algorithm using little memory. The engineering trade-off was therefore to use the fastest algorithm that could fit in the available memory.
1862:
for a value in RAM. While originally motivated to create the impression of higher amounts of memory being available than were truly available, virtual memory is more important in contemporary usage for its
1603:
This sort of test also depends heavily on the selection of a particular programming language, compiler, and compiler options, so algorithms being compared must all be implemented under the same conditions.
2199:
Guy Lewis Steele, Jr. "Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO". MIT AI Lab. AI Lab Memo AIM-443. October 1977.
1786:
must fetch the data from the cache, perform the operation in registers and write the data back to the cache. This operates at speeds comparable (about 2-10 times slower) with the CPU or GPU's
765:
when only a few items are to be sorted; however either implementation is likely to meet performance requirements for a small list. Typically, programmers are interested in algorithms that
1349:) may implement an instruction in different ways, so that instructions which are relatively fast on some models may be relatively slow on other models. This often presents challenges to 634: 1295:; it may or may not be easy for a programmer or compiler to use these capabilities. Algorithms designed for sequential processing may need to be completely redesigned to make use of 1373:
to produce a result that is otherwise incomputable on that platform, even if it is natively supported and more efficient in hardware on other platforms. This is often the case in
1221:
Implementation issues can also have an effect on efficiency, such as the choice of programming language, or the way in which the algorithm is actually coded, or the choice of a
464:"In established engineering disciplines a 12% improvement, easily obtained, is never considered marginal and I believe the same viewpoint should prevail in software engineering" 237:
complexity cannot be compared directly, so which of two algorithms is considered to be more efficient often depends on which measure of efficiency is considered most important.
1135: 1418: 1762:
is the second fastest, and second smallest, available in the memory hierarchy. Caches are present in processors such as CPUs or GPUs, where they are typically implemented in
978: 869: 502:. Software costs can be quite high, so in some cases the simplest and cheapest way of getting higher performance might be to just buy a faster computer, provided it is 1045: 365: 286: 921: 815: 696: 663: 543:, the normal practice is to estimate their complexity in the asymptotic sense. The most commonly used notation to describe resource consumption or "complexity" is 1707: 398: 323: 1388:
often lack hardware support for floating-point arithmetic and thus require computationally expensive software routines to produce floating point calculations.
2226:; Li, Sheng; Muralimanohar, Naveen; Peterson, Gregory D; Pinkston, Timothy Mark; Ranganathan, Prakash; Wood, David Allen; Young, Clifford; Zaky, Amr (2011). 1506:) can result in transmitting tens of thousands of bytes (48K in this case) compared with transmitting six bytes for the text "Google". This is important for 759: 739: 716: 569: 1202:
Some benchmarks provide opportunities for producing an analysis comparing the relative speed of various compiled and interpreted languages for example and
3297: 2277: 1689: 1357:
and other hardware available on the compilation target to best optimize a program for performance. In the extreme case, a compiler may be forced to
50: 1592:
Run-based profiling can be very sensitive to hardware configuration and the possibility of other programs or tasks running at the same time in a
769:
efficiently to large input sizes, and merge sort is preferred over bubble sort for lists of length encountered in most data-intensive programs.
2994: 2966: 1640:
analysis to get an estimate of the run-time memory needed as a function as the size of the input data. The result is normally expressed using
3019: 1265: 1203: 2870: 2012: 153: 145: 1561:, can be used to get an estimate of the running time as a function of the size of the input data. The result is normally expressed using 3024: 2296: 1589:
usage. For long-running algorithms the elapsed time could also be of interest. Results should generally be averaged over several tests.
1585:
can be used to assess the performance of an algorithm in practice. Many programming languages have an available function which provides
2529: 2235: 1858:
which allows use of a potentially larger storage space, at the cost of much higher latency, typically around 1000 times slower than a
97: 3463: 3176: 3004: 2534: 1469:
As of 2018, power consumption is growing as an important metric for computational tasks of all types and at all scales ranging from
1311: 171: 116: 1912:. An algorithm which will not fit completely in cache memory but which exhibits locality of reference may perform reasonably well. 69: 3264: 2358: 1967: 1828:) than an L3 CPU cache, with read and write latencies typically 10-100 times slower. As of 2018, RAM is increasingly implemented 1248:
There are other factors which may affect time or space issues, but which may be outside of a programmer's control; these include
3535: 2652: 1962: 1945: 1570: 1308: 1273: 528: 453: 400:). If large lists must be sorted at high speed for a given application, timsort is a better choice; however, if minimizing the 2905: 2222:; Bakos, Jason D; Colwell, Robert P; Bhattacharjee, Abhishek; Conte, Thomas M; Duato, José; Franklin, Diana; Goldberg, David; 76: 3545: 3408: 3290: 2943: 2562: 2270: 1157: 54: 1706:
Early electronic computers, and early home computers, had relatively small amounts of working memory. For example, the 1949
3540: 3428: 3423: 3085: 3062: 2792: 2782: 1269: 368: 252:
of items from smallest to largest. Bubble sort organizes the list in time proportional to the number of elements squared (
3166: 2754: 2662: 2567: 2343: 2328: 1933: 1753: 1697: 1338: 1074: 1001: 83: 3479: 3377: 3254: 2989: 2487: 1763: 1277: 1149: 1145: 3514: 3489: 3458: 3226: 2875: 1881: 1362: 515: 65: 1183:
product will best suit their specific requirements in terms of functionality and performance. For example, in the
452:
Modern computers are significantly faster than early computers and have a much larger amount of memory available (
43: 3550: 3337: 3283: 3244: 3171: 3146: 3009: 2657: 2263: 1378: 1331: 441: 3484: 3095: 2928: 2514: 2383: 1655: 1531: 1238: 1206:
compares the performance of implementations of typical programming problems in several programming languages.
578: 3398: 3156: 3090: 2981: 2797: 2457: 1354: 1234: 879: 511: 3433: 3413: 3221: 3052: 2933: 2700: 2685: 2027: 1956: 1921: 1766:, though they can also be found in peripherals such as disk drives. Processor caches often have their own 1633: 1554: 989: 540: 503: 475: 219: 1896:
data fit in cache memory; in this case minimizing space will also help minimize time. This is called the
930:
Finding an item in an unsorted list or a malformed tree (worst case) or in an unsorted array; Adding two
3191: 3161: 3151: 3047: 2961: 2837: 2777: 2744: 2734: 2617: 2582: 2572: 2509: 2378: 2353: 2348: 2313: 1939: 1927: 1901: 1897: 1787: 1783: 1582: 1523: 1304: 1257: 1226: 1175: 229:
For maximum efficiency it is desirable to minimize resource usage. However, different resources such as
200: 1091: 1748:, there are typically on the order of hundreds of bytes or fewer of register availability, although a 1399: 3362: 3352: 3342: 2951: 2923: 2895: 2890: 2719: 2695: 2647: 2630: 2625: 2607: 2597: 2592: 2554: 2504: 2499: 2416: 2362: 1950: 1779: 1621: 1242: 1188: 499: 437: 188: 2032: 90: 3216: 3141: 3057: 3042: 2807: 2587: 2544: 2539: 2436: 2426: 2398: 1864: 1791: 1527: 1507: 1382: 1370: 1366: 1350: 1153: 1062: 883: 718: 429: 192: 2157:(2016). "The (black) art of runtime evaluation: Are we comparing algorithms or implementations?". 3181: 3080: 2956: 2913: 2822: 2764: 2749: 2739: 2524: 2323: 2182: 2150: 2080: 2045: 1741: 1673: 1669: 1662: 1613: 1566: 1473: 1358: 1300: 1296: 1184: 1161: 935: 492: 2053: 1502:
can be used to reduce the amount of data to be transmitted. Displaying a picture or image (e.g.
945: 839: 3367: 3201: 3131: 3110: 3072: 2880: 2847: 2827: 2519: 2431: 2305: 2241: 2231: 2219: 2174: 1909: 1885: 1847: 1806:, and a further 10 times slower if there is an L2 cache miss and it must be retrieved from an 1715: 1617: 1597: 1179: 1014: 982: 666: 520: 249: 196: 1714:
came initially with 1024 8-bit bytes of working memory. In the late 2010s, it is typical for
3306: 3034: 2918: 2885: 2680: 2602: 2491: 2477: 2472: 2421: 2408: 2333: 2286: 2166: 2037: 1905: 1855: 1731: 1637: 1629: 1593: 1499: 1346: 1288: 1230: 1139: 873: 445: 401: 332: 234: 222:
used by the algorithm. Algorithmic efficiency can be thought of as analogous to engineering
207: 1337:
Another problem which can arise in programming is that processors compatible with the same
1178:
are sometimes used, which assist with gauging an algorithms relative performance. If a new
772:
Some examples of Big O notation applied to algorithms' asymptotic time complexity include:
3332: 3327: 3105: 2999: 2971: 2865: 2817: 2802: 2787: 2642: 2637: 2577: 2467: 2441: 2393: 2338: 2102: 1868: 1767: 1558: 1503: 1485: 1470: 1385: 1374: 1261: 897: 791: 672: 639: 488: 417: 293: 255: 230: 3372: 3211: 3115: 3014: 2860: 2832: 1889: 1843: 1829: 1775: 1685: 1672:
and do not need any additional space for output data. This property is referred to as "
1641: 1625: 1562: 1477: 1249: 1210: 1082: 1078: 1054: 1049: 548: 480: 289: 1989: 374: 299: 3529: 3100: 2388: 2223: 2081:"Floating Point Benchmark: Comparing Languages (Fourmilog: None Dare Call It Reason)" 2049: 1749: 1693: 1491:
Less common measures of computational efficiency may also be relevant in some cases:
1449: 1323: 1307:
grow in importance in the late 2010s, more investments are being made into efficient
887: 829: 819: 551:, representing the complexity of an algorithm as a function of the size of the input 523:
perform poorly on data which is already sorted, or which is sorted in reverse order.
2186: 761:
is large as the notation is asymptotic. For example, bubble sort may be faster than
17: 3453: 3403: 3196: 2855: 2154: 1839: 1771: 1710:(EDSAC) had a maximum working memory of 1024 17-bit words, while the 1980 Sinclair 1696:
during a calculation; this stack space can be significant for algorithms which use
825: 744: 724: 701: 554: 544: 457: 413: 326: 223: 1237:
may be much slower than a language implemented by a compiler. See the articles on
1174:
For new versions of software or to provide comparisons with competitive systems,
3357: 3347: 3186: 2812: 2724: 1817: 1813: 1481: 1253: 1066: 925: 766: 433: 241: 32: 3206: 3136: 2729: 2462: 2318: 2170: 1872: 1859: 1833: 1799: 1445: 1319: 1281: 1070: 1005: 762: 484: 2245: 2178: 824:
Finding the median from a sorted list of measurements; Using a constant-size
3393: 2711: 2672: 1959:—the practice of using empirical methods to study the behavior of algorithms 1851: 1759: 997: 572: 215: 2200: 1361:
instructions not supported on a compilation target platform, forcing it to
2041: 498:
Computer manufacturers frequently bring out new models, often with higher
2772: 1825: 1821: 1807: 1803: 1795: 1745: 1719: 1586: 1222: 1192: 993: 1396:
Measures are normally expressed as a function of the size of the input
636:
roughly means the time requirement for an algorithm is proportional to
329:(proportional to a quantity times its logarithm) in the list's length ( 245: 2126:"Nine Language Performance Round-up: Benchmarking Math & File I/O" 1540:: particularly if a computer is dedicated to one particular algorithm. 1681:
The amount of memory needed as working space during the calculation.
1632:) while the algorithm is being executed. As for time analysis above, 1441: 1342: 1327: 1970:—methods of measuring actual performance of an algorithm at run-time 1930:—a method for measuring comparative execution times in defined cases 412:
The importance of efficiency with respect to time was emphasized by
3275: 2255: 2125: 404:
of the sorting is more important, bubble sort is a better choice.
1936:—considerations for estimating execution times in three scenarios 1711: 1315: 1292: 460:
emphasized that efficiency is still an important consideration:
3279: 2259: 1651:
The amount of memory needed to hold the code for the algorithm.
1884:
are extremely important to high-performance computing, as are
1722:
of RAM, an increase of over 300 million times as much memory.
1196: 128: 26: 187:
Not to be confused with optimization, which is discussed in
1647:
There are up to four aspects of memory usage to consider:
296:
which is constant with respect to the length of the list (
1440:
For computers whose power is supplied by a battery (e.g.
1612:
This section is concerned with use of memory resources (
1314:
for parallel and distributed computing systems such as
1233:
being used. In many cases a language implemented by an
1195:
compete with products from the major suppliers such as
1924:—how to determine the resources needed by an algorithm 1756:
registers defined in the instruction set architecture.
1403: 1353:, which must have extensive knowledge of the specific 747: 741:
is small, but is generally sufficiently accurate when
727: 704: 581: 557: 491:
may have been unacceptably inefficient for industrial
377: 335: 302: 258: 1402: 1191:
products from independent software companies such as
1094: 1017: 948: 900: 842: 794: 675: 642: 1158:
determining if two logical statements are equivalent
481:
approximate doubling of computer power every 2 years
3472: 3446: 3386: 3320: 3313: 3124: 3071: 3033: 2980: 2942: 2904: 2846: 2763: 2709: 2671: 2616: 2553: 2486: 2450: 2407: 2371: 2304: 1875:, and incur huge performance penalties on programs. 57:. Unsourced material may be challenged and removed. 2213: 2211: 2209: 2207: 1820:(DRAM). The main memory is much larger (typically 1782:. In order to process operands in cache memory, a 1412: 1293:single instruction to operate on multiple operands 1129: 1039: 972: 915: 863: 809: 753: 733: 710: 690: 657: 628: 563: 392: 359: 317: 280: 1802:and it must be retrieved from and written to the 1798:. It is about 10 times slower if there is an L1 1770:; lower levels are larger, slower and typically 1459:: power needed directly to operate the computer. 483:, tasks that are acceptably efficient on modern 1430:: how long does the algorithm take to complete? 2228:Computer Architecture: a Quantitative Approach 2075: 2073: 2013:"Structured Programming with go-to Statements" 3291: 2295:Note: This template roughly follows the 2012 2271: 1708:Electronic Delay Storage Automatic Calculator 1448:), or for very long/large calculations (e.g. 621: 602: 292:), but only requires a small amount of extra 8: 1871:. Cache misses from main memory are called 1299:, or they could be easily reconfigured. As 3317: 3298: 3284: 3276: 2278: 2264: 2256: 1465:: power needed for cooling, lighting, etc. 1276:(at either a hardware or software level), 1117: 2031: 1752:may contain more physical registers than 1404: 1401: 1105: 1093: 1028: 1016: 947: 899: 878:Finding an item in a sorted array with a 841: 793: 746: 726: 703: 674: 641: 629:{\textstyle f(n)=O{\bigl (}g(n){\bigr )}} 620: 619: 601: 600: 580: 556: 376: 334: 301: 269: 257: 172:Learn how and when to remove this message 117:Learn how and when to remove this message 1668:Some algorithms, such as sorting, often 1498:: bandwidth could be a limiting factor. 774: 1980: 721:. This estimate may be misleading when 226:for a repeating or continuous process. 2995:Knowledge representation and reasoning 2218:Hennessy, John L; Patterson, David A; 1532:respond quickly to some external event 1526:): this is particularly relevant in a 1287:Some processors have capabilities for 1069:(worst case or naive implementation), 575:measure of function complexity, where 3020:Philosophy of artificial intelligence 1991:Classics in the History of Psychology 1484:. This trend is often referred to as 1204:The Computer Language Benchmarks Game 7: 3510: 2339:Energy consumption (Green computing) 2230:(Sixth ed.). Elsevier Science. 1661:The amount of memory needed for any 1654:The amount of memory needed for the 55:adding citations to reliable sources 3025:Distributed artificial intelligence 2297:ACM Computing Classification System 1452:), other measures of interest are: 2530:Integrated development environment 1423:The two most common measures are: 1225:for a particular language, or the 325:). Timsort sorts the list in time 144:tone or style may not reflect the 25: 3464:List of system quality attributes 3005:Automated planning and scheduling 2535:Software configuration management 2159:Knowledge and Information Systems 1130:{\displaystyle O(c^{n}),\;c>1} 698:to the growth of the function as 420:'s mechanical analytical engine: 3509: 3503: 3502: 3259: 3249: 3240: 3239: 1846:management, is memory stored in 1557:, typically using concepts like 1413:{\displaystyle \scriptstyle {n}} 154:guide to writing better articles 133: 31: 3250: 2653:Computational complexity theory 1963:Optimization (computer science) 1946:Computational complexity theory 1636:the algorithm, typically using 886:as well as all operations in a 367:), but has a space requirement 218:which relates to the amount of 42:needs additional citations for 2437:Network performance evaluation 1942:—compiler-derived optimization 1530:when the computer system must 1111: 1098: 1034: 1021: 967: 952: 910: 904: 858: 846: 804: 798: 685: 679: 652: 646: 616: 610: 591: 585: 454:gigabytes instead of kilobytes 387: 381: 354: 339: 312: 306: 275: 262: 1: 2808:Multimedia information system 2793:Geographic information system 2783:Enterprise information system 2372:Computer systems organization 2103:"Whetstone Benchmark History" 2083:. Fourmilab.ch. 4 August 2005 1900:, and can be subdivided into 1854:, and is an extension to the 1816:is most often implemented in 1270:instruction-level parallelism 3167:Computational social science 2755:Theoretical computer science 2568:Software development process 2344:Electronic design automation 2329:Very Large Scale Integration 1934:Best, worst and average case 1726:Caching and memory hierarchy 3480:Software quality management 3459:Non-functional requirements 2990:Natural language processing 2778:Information storage systems 1150:travelling salesman problem 985:, loglinear, or quasilinear 506:with an existing computer. 371:in the length of the list ( 3567: 3490:Software quality assurance 2906:Human–computer interaction 2876:Intrusion detection system 2788:Social information systems 2773:Database management system 1953:—computer hardware metrics 1882:cache replacement policies 1867:and enabling the usage of 1729: 1463:Indirect power consumption 1392:Measures of resource usage 1187:world certain proprietary 973:{\displaystyle O(n\log n)} 669:that contribute less than 186: 3498: 3235: 3172:Computational engineering 3147:Computational mathematics 2293: 2171:10.1007/s10115-016-1004-2 1832:of processors, as CPU or 1718:to have between 4 and 32 1571:more difficult to analyze 1379:floating-point arithmetic 1278:simultaneous multitasking 1144:Finding the optimal (non- 864:{\displaystyle O(\log n)} 250:algorithms to sort a list 3485:Software quality control 3182:Computational healthcare 3177:Differentiable computing 3096:Graphics processing unit 2515:Domain-specific language 2384:Computational complexity 1670:rearrange the input data 1457:Direct power consumption 1239:just-in-time compilation 1040:{\displaystyle O(n^{2})} 832:for looking up an item. 184:Property of an algorithm 66:"Algorithmic efficiency" 3157:Computational chemistry 3091:Photograph manipulation 2982:Artificial intelligence 2798:Decision support system 1886:cache-aware programming 1538:Total cost of ownership 1217:Implementation concerns 719:grows arbitrarily large 571:. Big O notation is an 512:total cost of ownership 360:{\textstyle O(n\log n)} 220:computational resources 148:used on Knowledge (XXG) 3536:Analysis of algorithms 3222:Educational technology 3053:Reinforcement learning 2803:Process control system 2701:Computational geometry 2691:Algorithmic efficiency 2686:Analysis of algorithms 2334:Systems on Chip (SoCs) 2105:. Roylongbottom.org.uk 2011:Knuth, Donald (1974), 1957:Empirical algorithmics 1922:Analysis of algorithms 1555:Analysis of algorithms 1414: 1131: 1041: 990:Fast Fourier transform 974: 917: 865: 811: 755: 735: 712: 692: 659: 630: 565: 541:analysis of algorithms 466: 426: 416:in 1843 as applied to 394: 361: 319: 282: 212:algorithmic efficiency 152:See Knowledge (XXG)'s 3546:Software optimization 3192:Electronic publishing 3162:Computational biology 3152:Computational physics 3048:Unsupervised learning 2962:Distributed computing 2838:Information retrieval 2745:Mathematical analysis 2735:Mathematical software 2618:Theory of computation 2583:Software construction 2573:Requirements analysis 2451:Software organization 2379:Computer architecture 2349:Hardware acceleration 2314:Printed circuit board 2042:10.1145/356635.356640 1940:Compiler optimization 1902:locality of reference 1898:principle of locality 1788:arithmetic logic unit 1780:multi-core processors 1768:multi-level hierarchy 1730:Further information: 1528:real-time application 1415: 1305:distributed computing 1243:interpreted languages 1170:Measuring performance 1132: 1042: 1002:best and average case 975: 918: 882:or a balanced search 866: 812: 756: 736: 713: 693: 660: 631: 566: 462: 422: 395: 362: 320: 283: 281:{\textstyle O(n^{2})} 201:object code optimizer 3541:Computer performance 2952:Concurrent computing 2924:Ubiquitous computing 2896:Application security 2891:Information security 2720:Discrete mathematics 2696:Randomized algorithm 2648:Computability theory 2626:Model of computation 2598:Software maintenance 2593:Software engineering 2555:Software development 2505:Programming language 2500:Programming paradigm 2417:Network architecture 1988:Green, Christopher, 1968:Performance analysis 1951:Computer performance 1814:Main physical memory 1400: 1351:optimizing compilers 1092: 1015: 946: 916:{\displaystyle O(n)} 898: 840: 810:{\displaystyle O(1)} 792: 745: 725: 702: 691:{\displaystyle g(n)} 673: 658:{\displaystyle g(n)} 640: 579: 555: 535:Theoretical analysis 442:space–time trade-off 438:random access memory 430:electronic computers 375: 333: 300: 256: 214:is a property of an 189:program optimization 51:improve this article 18:Algorithm efficiency 3447:Standards and lists 3227:Document management 3217:Operations research 3142:Enterprise software 3058:Multi-task learning 3043:Supervised learning 2765:Information systems 2588:Software deployment 2545:Software repository 2399:Real-time computing 2153:; Schubert, Erich; 2151:Kriegel, Hans-Peter 1865:time-space tradeoff 1792:floating-point unit 1742:Processor registers 1567:Parallel algorithms 1508:I/O bound computing 1297:parallel processing 1227:compilation options 1154:dynamic programming 828:; Using a suitable 539:In the theoretical 193:optimizing compiler 3010:Search methodology 2957:Parallel computing 2914:Interaction design 2823:Computing platform 2750:Numerical analysis 2740:Information theory 2525:Software framework 2488:Software notations 2427:Network components 2324:Integrated circuit 1716:personal computers 1690:stack space needed 1474:Internet of things 1410: 1409: 1381:, where small and 1266:garbage collection 1229:used, or even the 1162:brute-force search 1148:) solution to the 1127: 1063:a simple algorithm 1061:-digit numbers by 1037: 970: 913: 861: 807: 751: 731: 708: 688: 655: 626: 561: 521:sorting algorithms 390: 357: 315: 278: 3523: 3522: 3442: 3441: 3368:Understandability 3273: 3272: 3202:Electronic voting 3132:Quantum Computing 3125:Applied computing 3111:Image compression 2881:Hardware security 2871:Security services 2828:Digital marketing 2608:Open-source model 2520:Modeling language 2432:Network scheduler 2059:on 24 August 2009 2020:Computing Surveys 1910:temporal locality 1848:secondary storage 1842:, often used for 1598:multi-programming 1496:Transmission size 1289:vector processing 1167: 1166: 934:-bit integers by 667:lower-order terms 456:). Nevertheless, 432:had both limited 393:{\textstyle O(n)} 318:{\textstyle O(1)} 197:loop optimization 182: 181: 174: 146:encyclopedic tone 127: 126: 119: 101: 16:(Redirected from 3558: 3551:Software quality 3513: 3512: 3506: 3505: 3318: 3307:Software quality 3300: 3293: 3286: 3277: 3263: 3262: 3253: 3252: 3243: 3242: 3063:Cross-validation 3035:Machine learning 2919:Social computing 2886:Network security 2681:Algorithm design 2603:Programming team 2563:Control variable 2540:Software library 2478:Software quality 2473:Operating system 2422:Network protocol 2287:Computer science 2280: 2273: 2266: 2257: 2250: 2249: 2224:Jouppi, Norman P 2215: 2202: 2197: 2191: 2190: 2147: 2141: 2140: 2138: 2136: 2121: 2115: 2114: 2112: 2110: 2099: 2093: 2092: 2090: 2088: 2077: 2068: 2067: 2066: 2064: 2058: 2052:, archived from 2035: 2017: 2008: 2002: 2001: 2000: 1998: 1985: 1906:spatial locality 1869:virtual machines 1856:memory hierarchy 1732:Memory hierarchy 1638:space complexity 1630:secondary memory 1594:multi-processing 1500:Data compression 1419: 1417: 1416: 1411: 1408: 1386:microcontrollers 1377:with respect to 1375:embedded systems 1291:, which allow a 1254:data granularity 1231:operating system 1136: 1134: 1133: 1128: 1110: 1109: 1046: 1044: 1043: 1038: 1033: 1032: 979: 977: 976: 971: 922: 920: 919: 914: 870: 868: 867: 862: 816: 814: 813: 808: 775: 760: 758: 757: 752: 740: 738: 737: 732: 717: 715: 714: 709: 697: 695: 694: 689: 664: 662: 661: 656: 635: 633: 632: 627: 625: 624: 606: 605: 570: 568: 567: 562: 489:embedded systems 402:memory footprint 399: 397: 396: 391: 366: 364: 363: 358: 324: 322: 321: 316: 287: 285: 284: 279: 274: 273: 208:computer science 177: 170: 166: 163: 157: 156:for suggestions. 137: 136: 129: 122: 115: 111: 108: 102: 100: 59: 35: 27: 21: 3566: 3565: 3561: 3560: 3559: 3557: 3556: 3555: 3526: 3525: 3524: 3519: 3494: 3468: 3438: 3382: 3333:Maintainability 3309: 3304: 3274: 3269: 3260: 3231: 3212:Word processing 3120: 3106:Virtual reality 3067: 3029: 3000:Computer vision 2976: 2972:Multiprocessing 2938: 2900: 2866:Security hacker 2842: 2818:Digital library 2759: 2710:Mathematics of 2705: 2667: 2643:Automata theory 2638:Formal language 2612: 2578:Software design 2549: 2482: 2468:Virtual machine 2446: 2442:Network service 2403: 2394:Embedded system 2367: 2300: 2289: 2284: 2254: 2253: 2238: 2220:Asanović, Krste 2217: 2216: 2205: 2198: 2194: 2149: 2148: 2144: 2134: 2132: 2123: 2122: 2118: 2108: 2106: 2101: 2100: 2096: 2086: 2084: 2079: 2078: 2071: 2062: 2060: 2056: 2033:10.1.1.103.6084 2015: 2010: 2009: 2005: 1996: 1994: 1987: 1986: 1982: 1977: 1918: 1824:compared to ≈8 1784:processing unit 1776:processor cores 1734: 1728: 1694:routines called 1686:local variables 1610: 1579: 1559:time complexity 1552: 1547: 1486:green computing 1398: 1397: 1394: 1339:instruction set 1274:multi-threading 1262:cache coherency 1219: 1209:Even creating " 1172: 1101: 1090: 1089: 1024: 1013: 1012: 944: 943: 896: 895: 838: 837: 790: 789: 743: 742: 723: 722: 700: 699: 671: 670: 638: 637: 577: 576: 553: 552: 537: 471: 440:. Therefore, a 418:Charles Babbage 410: 373: 372: 331: 330: 298: 297: 265: 254: 253: 204: 185: 178: 167: 161: 158: 151: 142:This article's 138: 134: 123: 112: 106: 103: 60: 58: 48: 36: 23: 22: 15: 12: 11: 5: 3564: 3562: 3554: 3553: 3548: 3543: 3538: 3528: 3527: 3521: 3520: 3518: 3517: 3507: 3499: 3496: 3495: 3493: 3492: 3487: 3482: 3476: 3474: 3470: 3469: 3467: 3466: 3461: 3456: 3450: 3448: 3444: 3443: 3440: 3439: 3437: 3436: 3431: 3426: 3421: 3416: 3411: 3406: 3401: 3396: 3390: 3388: 3384: 3383: 3381: 3380: 3375: 3373:Loose coupling 3370: 3365: 3360: 3355: 3350: 3345: 3340: 3335: 3330: 3324: 3322: 3315: 3311: 3310: 3305: 3303: 3302: 3295: 3288: 3280: 3271: 3270: 3268: 3267: 3257: 3247: 3236: 3233: 3232: 3230: 3229: 3224: 3219: 3214: 3209: 3204: 3199: 3194: 3189: 3184: 3179: 3174: 3169: 3164: 3159: 3154: 3149: 3144: 3139: 3134: 3128: 3126: 3122: 3121: 3119: 3118: 3116:Solid modeling 3113: 3108: 3103: 3098: 3093: 3088: 3083: 3077: 3075: 3069: 3068: 3066: 3065: 3060: 3055: 3050: 3045: 3039: 3037: 3031: 3030: 3028: 3027: 3022: 3017: 3015:Control method 3012: 3007: 3002: 2997: 2992: 2986: 2984: 2978: 2977: 2975: 2974: 2969: 2967:Multithreading 2964: 2959: 2954: 2948: 2946: 2940: 2939: 2937: 2936: 2931: 2926: 2921: 2916: 2910: 2908: 2902: 2901: 2899: 2898: 2893: 2888: 2883: 2878: 2873: 2868: 2863: 2861:Formal methods 2858: 2852: 2850: 2844: 2843: 2841: 2840: 2835: 2833:World Wide Web 2830: 2825: 2820: 2815: 2810: 2805: 2800: 2795: 2790: 2785: 2780: 2775: 2769: 2767: 2761: 2760: 2758: 2757: 2752: 2747: 2742: 2737: 2732: 2727: 2722: 2716: 2714: 2707: 2706: 2704: 2703: 2698: 2693: 2688: 2683: 2677: 2675: 2669: 2668: 2666: 2665: 2660: 2655: 2650: 2645: 2640: 2635: 2634: 2633: 2622: 2620: 2614: 2613: 2611: 2610: 2605: 2600: 2595: 2590: 2585: 2580: 2575: 2570: 2565: 2559: 2557: 2551: 2550: 2548: 2547: 2542: 2537: 2532: 2527: 2522: 2517: 2512: 2507: 2502: 2496: 2494: 2484: 2483: 2481: 2480: 2475: 2470: 2465: 2460: 2454: 2452: 2448: 2447: 2445: 2444: 2439: 2434: 2429: 2424: 2419: 2413: 2411: 2405: 2404: 2402: 2401: 2396: 2391: 2386: 2381: 2375: 2373: 2369: 2368: 2366: 2365: 2356: 2351: 2346: 2341: 2336: 2331: 2326: 2321: 2316: 2310: 2308: 2302: 2301: 2294: 2291: 2290: 2285: 2283: 2282: 2275: 2268: 2260: 2252: 2251: 2237:978-0128119051 2236: 2203: 2192: 2165:(2): 341–378. 2142: 2124:OSNews Staff. 2116: 2094: 2069: 2026:(4): 261–301, 2003: 1979: 1978: 1976: 1973: 1972: 1971: 1965: 1960: 1954: 1948: 1943: 1937: 1931: 1925: 1917: 1914: 1890:data alignment 1877: 1876: 1844:virtual memory 1837: 1811: 1757: 1746:processor core 1727: 1724: 1704: 1703: 1702: 1701: 1684:This includes 1679: 1678: 1677: 1659: 1652: 1642:Big O notation 1626:virtual memory 1609: 1606: 1578: 1575: 1563:Big O notation 1551: 1548: 1546: 1543: 1542: 1541: 1535: 1517: 1514:External space 1511: 1478:system-on-chip 1467: 1466: 1460: 1450:supercomputers 1438: 1437: 1431: 1407: 1393: 1390: 1258:cache locality 1250:data alignment 1218: 1215: 1211:do it yourself 1180:sort algorithm 1171: 1168: 1165: 1164: 1142: 1137: 1126: 1123: 1120: 1116: 1113: 1108: 1104: 1100: 1097: 1086: 1085: 1083:insertion sort 1079:selection sort 1052: 1047: 1036: 1031: 1027: 1023: 1020: 1009: 1008: 986: 980: 969: 966: 963: 960: 957: 954: 951: 940: 939: 928: 923: 912: 909: 906: 903: 892: 891: 876: 871: 860: 857: 854: 851: 848: 845: 834: 833: 822: 817: 806: 803: 800: 797: 786: 785: 782: 779: 754:{\textstyle n} 750: 734:{\textstyle n} 730: 711:{\textstyle n} 707: 687: 684: 681: 678: 654: 651: 648: 645: 623: 618: 615: 612: 609: 604: 599: 596: 593: 590: 587: 584: 564:{\textstyle n} 560: 549:Big O notation 536: 533: 495:10 years ago. 470: 467: 409: 406: 389: 386: 383: 380: 356: 353: 350: 347: 344: 341: 338: 314: 311: 308: 305: 290:Big O notation 277: 272: 268: 264: 261: 183: 180: 179: 141: 139: 132: 125: 124: 39: 37: 30: 24: 14: 13: 10: 9: 6: 4: 3: 2: 3563: 3552: 3549: 3547: 3544: 3542: 3539: 3537: 3534: 3533: 3531: 3516: 3508: 3501: 3500: 3497: 3491: 3488: 3486: 3483: 3481: 3478: 3477: 3475: 3471: 3465: 3462: 3460: 3457: 3455: 3452: 3451: 3449: 3445: 3435: 3432: 3430: 3427: 3425: 3422: 3420: 3417: 3415: 3412: 3410: 3407: 3405: 3402: 3400: 3397: 3395: 3392: 3391: 3389: 3385: 3379: 3378:Orthogonality 3376: 3374: 3371: 3369: 3366: 3364: 3361: 3359: 3356: 3354: 3351: 3349: 3346: 3344: 3341: 3339: 3336: 3334: 3331: 3329: 3326: 3325: 3323: 3319: 3316: 3312: 3308: 3301: 3296: 3294: 3289: 3287: 3282: 3281: 3278: 3266: 3258: 3256: 3248: 3246: 3238: 3237: 3234: 3228: 3225: 3223: 3220: 3218: 3215: 3213: 3210: 3208: 3205: 3203: 3200: 3198: 3195: 3193: 3190: 3188: 3185: 3183: 3180: 3178: 3175: 3173: 3170: 3168: 3165: 3163: 3160: 3158: 3155: 3153: 3150: 3148: 3145: 3143: 3140: 3138: 3135: 3133: 3130: 3129: 3127: 3123: 3117: 3114: 3112: 3109: 3107: 3104: 3102: 3101:Mixed reality 3099: 3097: 3094: 3092: 3089: 3087: 3084: 3082: 3079: 3078: 3076: 3074: 3070: 3064: 3061: 3059: 3056: 3054: 3051: 3049: 3046: 3044: 3041: 3040: 3038: 3036: 3032: 3026: 3023: 3021: 3018: 3016: 3013: 3011: 3008: 3006: 3003: 3001: 2998: 2996: 2993: 2991: 2988: 2987: 2985: 2983: 2979: 2973: 2970: 2968: 2965: 2963: 2960: 2958: 2955: 2953: 2950: 2949: 2947: 2945: 2941: 2935: 2934:Accessibility 2932: 2930: 2929:Visualization 2927: 2925: 2922: 2920: 2917: 2915: 2912: 2911: 2909: 2907: 2903: 2897: 2894: 2892: 2889: 2887: 2884: 2882: 2879: 2877: 2874: 2872: 2869: 2867: 2864: 2862: 2859: 2857: 2854: 2853: 2851: 2849: 2845: 2839: 2836: 2834: 2831: 2829: 2826: 2824: 2821: 2819: 2816: 2814: 2811: 2809: 2806: 2804: 2801: 2799: 2796: 2794: 2791: 2789: 2786: 2784: 2781: 2779: 2776: 2774: 2771: 2770: 2768: 2766: 2762: 2756: 2753: 2751: 2748: 2746: 2743: 2741: 2738: 2736: 2733: 2731: 2728: 2726: 2723: 2721: 2718: 2717: 2715: 2713: 2708: 2702: 2699: 2697: 2694: 2692: 2689: 2687: 2684: 2682: 2679: 2678: 2676: 2674: 2670: 2664: 2661: 2659: 2656: 2654: 2651: 2649: 2646: 2644: 2641: 2639: 2636: 2632: 2629: 2628: 2627: 2624: 2623: 2621: 2619: 2615: 2609: 2606: 2604: 2601: 2599: 2596: 2594: 2591: 2589: 2586: 2584: 2581: 2579: 2576: 2574: 2571: 2569: 2566: 2564: 2561: 2560: 2558: 2556: 2552: 2546: 2543: 2541: 2538: 2536: 2533: 2531: 2528: 2526: 2523: 2521: 2518: 2516: 2513: 2511: 2508: 2506: 2503: 2501: 2498: 2497: 2495: 2493: 2489: 2485: 2479: 2476: 2474: 2471: 2469: 2466: 2464: 2461: 2459: 2456: 2455: 2453: 2449: 2443: 2440: 2438: 2435: 2433: 2430: 2428: 2425: 2423: 2420: 2418: 2415: 2414: 2412: 2410: 2406: 2400: 2397: 2395: 2392: 2390: 2389:Dependability 2387: 2385: 2382: 2380: 2377: 2376: 2374: 2370: 2364: 2360: 2357: 2355: 2352: 2350: 2347: 2345: 2342: 2340: 2337: 2335: 2332: 2330: 2327: 2325: 2322: 2320: 2317: 2315: 2312: 2311: 2309: 2307: 2303: 2298: 2292: 2288: 2281: 2276: 2274: 2269: 2267: 2262: 2261: 2258: 2247: 2243: 2239: 2233: 2229: 2225: 2221: 2214: 2212: 2210: 2208: 2204: 2201: 2196: 2193: 2188: 2184: 2180: 2176: 2172: 2168: 2164: 2160: 2156: 2155:Zimek, Arthur 2152: 2146: 2143: 2131: 2127: 2120: 2117: 2104: 2098: 2095: 2082: 2076: 2074: 2070: 2055: 2051: 2047: 2043: 2039: 2034: 2029: 2025: 2021: 2014: 2007: 2004: 1993: 1992: 1984: 1981: 1974: 1969: 1966: 1964: 1961: 1958: 1955: 1952: 1949: 1947: 1944: 1941: 1938: 1935: 1932: 1929: 1926: 1923: 1920: 1919: 1915: 1913: 1911: 1907: 1903: 1899: 1893: 1891: 1887: 1883: 1874: 1870: 1866: 1861: 1857: 1853: 1849: 1845: 1841: 1838: 1835: 1831: 1827: 1823: 1819: 1815: 1812: 1810:, if present. 1809: 1805: 1801: 1797: 1793: 1789: 1785: 1781: 1777: 1773: 1769: 1765: 1761: 1758: 1755: 1754:architectural 1751: 1750:register file 1747: 1743: 1740: 1739: 1738: 1733: 1725: 1723: 1721: 1717: 1713: 1709: 1699: 1695: 1691: 1687: 1683: 1682: 1680: 1675: 1671: 1667: 1666: 1664: 1660: 1657: 1653: 1650: 1649: 1648: 1645: 1643: 1639: 1635: 1631: 1627: 1623: 1619: 1615: 1607: 1605: 1601: 1600:environment. 1599: 1595: 1590: 1588: 1584: 1576: 1574: 1572: 1568: 1564: 1560: 1556: 1549: 1544: 1539: 1536: 1533: 1529: 1525: 1521: 1520:Response time 1518: 1515: 1512: 1509: 1505: 1501: 1497: 1494: 1493: 1492: 1489: 1487: 1483: 1479: 1475: 1472: 1464: 1461: 1458: 1455: 1454: 1453: 1451: 1447: 1443: 1435: 1432: 1429: 1426: 1425: 1424: 1421: 1405: 1391: 1389: 1387: 1384: 1380: 1376: 1372: 1368: 1364: 1363:generate code 1360: 1356: 1352: 1348: 1344: 1340: 1335: 1333: 1329: 1325: 1321: 1317: 1313: 1310: 1306: 1302: 1298: 1294: 1290: 1285: 1283: 1279: 1275: 1271: 1267: 1263: 1259: 1255: 1251: 1246: 1244: 1240: 1236: 1232: 1228: 1224: 1216: 1214: 1212: 1207: 1205: 1200: 1198: 1194: 1190: 1186: 1181: 1177: 1169: 1163: 1159: 1155: 1151: 1147: 1143: 1141: 1138: 1124: 1121: 1118: 1114: 1106: 1102: 1095: 1088: 1087: 1084: 1080: 1076: 1073:, quicksort ( 1072: 1068: 1064: 1060: 1056: 1053: 1051: 1048: 1029: 1025: 1018: 1011: 1010: 1007: 1003: 999: 995: 991: 988:Performing a 987: 984: 981: 964: 961: 958: 955: 949: 942: 941: 937: 933: 929: 927: 924: 907: 901: 894: 893: 889: 888:Binomial heap 885: 881: 880:binary search 877: 875: 872: 855: 852: 849: 843: 836: 835: 831: 830:hash function 827: 823: 821: 818: 801: 795: 788: 787: 783: 780: 777: 776: 773: 770: 768: 764: 748: 728: 720: 705: 682: 676: 668: 649: 643: 613: 607: 597: 594: 588: 582: 574: 558: 550: 546: 542: 534: 532: 530: 524: 522: 517: 516:response time 513: 507: 505: 501: 496: 494: 490: 486: 482: 477: 468: 465: 461: 459: 455: 450: 447: 443: 439: 435: 431: 425: 421: 419: 415: 407: 405: 403: 384: 378: 370: 351: 348: 345: 342: 336: 328: 309: 303: 295: 291: 270: 266: 259: 251: 247: 243: 240:For example, 238: 236: 232: 227: 225: 221: 217: 213: 209: 202: 198: 194: 190: 176: 173: 165: 155: 149: 147: 140: 131: 130: 121: 118: 110: 99: 96: 92: 89: 85: 82: 78: 75: 71: 68: –  67: 63: 62:Find sources: 56: 52: 46: 45: 40:This article 38: 34: 29: 28: 19: 3454:ISO/IEC 9126 3418: 3404:Adaptability 3197:Cyberwarfare 2856:Cryptography 2690: 2227: 2195: 2162: 2158: 2145: 2135:18 September 2133:. Retrieved 2129: 2119: 2107:. Retrieved 2097: 2085:. Retrieved 2061:, retrieved 2054:the original 2023: 2019: 2006: 1995:, retrieved 1990: 1983: 1894: 1878: 1840:Paged memory 1760:Cache memory 1735: 1705: 1676:" operation. 1646: 1611: 1602: 1591: 1580: 1553: 1537: 1519: 1513: 1495: 1490: 1482:server farms 1468: 1462: 1456: 1439: 1433: 1427: 1422: 1395: 1371:library call 1369:an external 1336: 1286: 1247: 1220: 1208: 1201: 1173: 1058: 983:linearithmic 936:ripple carry 931: 826:lookup table 771: 545:Donald Knuth 538: 529:optimization 525: 508: 497: 472: 463: 458:Donald Knuth 451: 444:occurred. A 436:and limited 427: 423: 414:Ada Lovelace 411: 327:linearithmic 239: 228: 224:productivity 211: 205: 168: 162:January 2024 159: 143: 113: 107:January 2024 104: 94: 87: 80: 73: 61: 49:Please help 44:verification 41: 3409:Correctness 3399:Reliability 3363:Testability 3358:Scalability 3353:Readability 3348:Reusability 3343:Portability 3338:Flexibility 3207:Video games 3187:Digital art 2944:Concurrency 2813:Data mining 2725:Probability 2458:Interpreter 2109:14 December 2087:14 December 1873:page faults 1818:dynamic RAM 1700:techniques. 1663:output data 1504:Google logo 1480:devices to 1476:devices to 1446:smartphones 1235:interpreter 1199:for speed. 1146:approximate 1140:exponential 1067:bubble sort 1055:Multiplying 874:logarithmic 665:, omitting 500:performance 485:smartphones 242:bubble sort 3530:Categories 3424:Robustness 3419:Efficiency 3265:Glossaries 3137:E-commerce 2730:Statistics 2673:Algorithms 2631:Stochastic 2463:Middleware 2319:Peripheral 2130:osnews.com 1975:References 1860:cache miss 1850:such as a 1834:GPU memory 1800:cache miss 1794:if in the 1764:static RAM 1656:input data 1320:TensorFlow 1309:high-level 1282:subroutine 1176:benchmarks 1075:worst case 1071:Shell sort 1006:merge sort 763:merge sort 573:asymptotic 504:compatible 408:Background 77:newspapers 3473:Processes 3394:Usability 3314:Qualities 3086:Rendering 3081:Animation 2712:computing 2663:Semantics 2354:Processor 2246:983459758 2179:0219-1377 2050:207630080 2028:CiteSeerX 1928:Benchmark 1852:hard disk 1826:megabytes 1822:gigabytes 1698:recursive 1614:registers 1583:benchmark 1383:low-power 1341:(such as 1185:mainframe 1050:quadratic 998:quicksort 962:⁡ 853:⁡ 784:Examples 349:⁡ 248:are both 216:algorithm 3429:Security 3414:Accuracy 3387:External 3321:Internal 3245:Category 3073:Graphics 2848:Security 2510:Compiler 2409:Networks 2306:Hardware 2187:40772241 1916:See also 1808:L3 cache 1804:L2 cache 1796:L1 cache 1774:between 1688:and any 1674:in-place 1587:CPU time 1577:Practice 1471:embedded 1301:parallel 1223:compiler 1193:Syncsort 994:heapsort 820:constant 778:Notation 531:issues. 476:function 469:Overview 3515:Commons 3255:Outline 1830:on-chip 1634:analyze 1569:may be 1524:latency 1442:laptops 1359:emulate 1284:calls. 493:servers 246:timsort 203:, etc.. 91:scholar 3434:Safety 2244:  2234:  2185:  2177:  2063:19 May 2048:  2030:  1997:19 May 1908:, and 1772:shared 1550:Theory 1510:tasks. 1343:x86-64 1328:OpenMP 1324:Hadoop 1280:, and 1160:using 1152:using 1004:), or 926:linear 428:Early 369:linear 294:memory 288:, see 93:  86:  79:  72:  64:  2658:Logic 2492:tools 2183:S2CID 2057:(PDF) 2046:S2CID 2016:(PDF) 1618:cache 1608:Space 1434:Space 767:scale 434:speed 235:space 98:JSTOR 84:books 3328:Size 2490:and 2363:Form 2359:Size 2242:OCLC 2232:ISBN 2175:ISSN 2137:2018 2111:2011 2089:2011 2065:2013 1999:2013 1888:and 1712:ZX80 1596:and 1545:Time 1444:and 1428:Time 1367:link 1330:and 1316:CUDA 1312:APIs 1303:and 1241:and 1189:sort 1122:> 1057:two 884:tree 781:Name 487:and 446:task 244:and 233:and 231:time 70:news 2167:doi 2038:doi 1790:or 1778:in 1692:by 1622:RAM 1365:or 1355:CPU 1347:ARM 1345:or 1332:MPI 1197:IBM 1081:or 1077:), 959:log 850:log 547:'s 346:log 206:In 53:by 3532:: 2361:/ 2240:. 2206:^ 2181:. 2173:. 2163:52 2161:. 2128:. 2072:^ 2044:, 2036:, 2022:, 2018:, 1904:, 1720:GB 1665:. 1644:. 1628:, 1624:, 1620:, 1616:, 1581:A 1573:. 1488:. 1420:. 1334:. 1326:, 1322:, 1318:, 1272:, 1268:, 1264:, 1260:, 1256:, 1252:, 1245:. 1156:; 1065:; 996:, 992:; 938:. 890:. 514:, 210:, 199:, 195:, 191:, 3299:e 3292:t 3285:v 2299:. 2279:e 2272:t 2265:v 2248:. 2189:. 2169:: 2139:. 2113:. 2091:. 2040:: 2024:6 1836:. 1658:. 1534:. 1522:( 1406:n 1125:1 1119:c 1115:, 1112:) 1107:n 1103:c 1099:( 1096:O 1059:n 1035:) 1030:2 1026:n 1022:( 1019:O 1000:( 968:) 965:n 956:n 953:( 950:O 932:n 911:) 908:n 905:( 902:O 859:) 856:n 847:( 844:O 805:) 802:1 799:( 796:O 749:n 729:n 706:n 686:) 683:n 680:( 677:g 653:) 650:n 647:( 644:g 622:) 617:) 614:n 611:( 608:g 603:( 598:O 595:= 592:) 589:n 586:( 583:f 559:n 388:) 385:n 382:( 379:O 355:) 352:n 343:n 340:( 337:O 313:) 310:1 307:( 304:O 276:) 271:2 267:n 263:( 260:O 175:) 169:( 164:) 160:( 150:. 120:) 114:( 109:) 105:( 95:· 88:· 81:· 74:· 47:. 20:)

Index

Algorithm efficiency

verification
improve this article
adding citations to reliable sources
"Algorithmic efficiency"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
encyclopedic tone
guide to writing better articles
Learn how and when to remove this message
program optimization
optimizing compiler
loop optimization
object code optimizer
computer science
algorithm
computational resources
productivity
time
space
bubble sort
timsort
algorithms to sort a list
Big O notation
memory

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.