CVSROOT: /webcvs/grep Module name: grep Changes by: Jim Meyering <meyering> 21/08/14 16:46:41
Index: html_node/Performance.html =================================================================== RCS file: /webcvs/grep/grep/manual/html_node/Performance.html,v retrieving revision 1.3 retrieving revision 1.4 diff -u -b -r1.3 -r1.4 --- html_node/Performance.html 28 Sep 2020 03:36:49 -0000 1.3 +++ html_node/Performance.html 14 Aug 2021 20:46:41 -0000 1.4 @@ -1,8 +1,11 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> +<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ --> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!-- This manual is for grep, a pattern matching engine. -Copyright (C) 1999-2002, 2005, 2008-2020 Free Software Foundation, +Copyright (C) 1999-2002, 2005, 2008-2021 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -11,65 +14,55 @@ Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". --> -<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> -<title>Performance (GNU Grep 3.5)</title> +<title>Performance (GNU Grep 3.7)</title> -<meta name="description" content="Performance (GNU Grep 3.5)"> -<meta name="keywords" content="Performance (GNU Grep 3.5)"> +<meta name="description" content="Performance (GNU Grep 3.7)"> +<meta name="keywords" content="Performance (GNU Grep 3.7)"> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="makeinfo"> -<link href="index.html#Top" rel="start" title="Top"> -<link href="Index.html#Index" rel="index" title="Index"> +<meta name="viewport" content="width=device-width,initial-scale=1"> + +<link href="index.html" rel="start" title="Top"> +<link href="Index.html" rel="index" title="Index"> <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents"> -<link href="index.html#Top" rel="up" title="Top"> -<link href="Reporting-Bugs.html#Reporting-Bugs" rel="next" title="Reporting Bugs"> -<link href="Usage.html#Usage" rel="prev" title="Usage"> +<link href="index.html" rel="up" title="Top"> +<link href="Reporting-Bugs.html" rel="next" title="Reporting Bugs"> +<link href="Usage.html" rel="prev" title="Usage"> <style type="text/css"> <!-- +a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em} a.summary-letter {text-decoration: none} blockquote.indentedblock {margin-right: 0em} -blockquote.smallindentedblock {margin-right: 0em; font-size: smaller} -blockquote.smallquotation {font-size: smaller} div.display {margin-left: 3.2em} div.example {margin-left: 3.2em} -div.lisp {margin-left: 3.2em} -div.smalldisplay {margin-left: 3.2em} -div.smallexample {margin-left: 3.2em} -div.smalllisp {margin-left: 3.2em} kbd {font-style: oblique} pre.display {font-family: inherit} pre.format {font-family: inherit} pre.menu-comment {font-family: serif} pre.menu-preformatted {font-family: serif} -pre.smalldisplay {font-family: inherit; font-size: smaller} -pre.smallexample {font-size: smaller} -pre.smallformat {font-family: inherit; font-size: smaller} -pre.smalllisp {font-size: smaller} span.nolinebreak {white-space: nowrap} span.roman {font-family: initial; font-weight: normal} span.sansserif {font-family: sans-serif; font-weight: normal} +span:hover a.copiable-anchor {visibility: visible} ul.no-bullet {list-style: none} --> </style> -<link rel="stylesheet" type="text/css" href="/software/gnulib/manual.css"> +<link rel="stylesheet" type="text/css" href="https://www.gnu.org/software/gnulib/manual.css"> </head> <body lang="en"> -<a name="Performance"></a> +<div class="chapter" id="Performance"> <div class="header"> <p> -Next: <a href="Reporting-Bugs.html#Reporting-Bugs" accesskey="n" rel="next">Reporting Bugs</a>, Previous: <a href="Usage.html#Usage" accesskey="p" rel="prev">Usage</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="Reporting-Bugs.html" accesskey="n" rel="next">Reporting bugs</a>, Previous: <a href="Usage.html" accesskey="p" rel="prev">Usage</a>, Up: <a href="index.html" accesskey="u" rel="up">grep</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> </div> <hr> -<a name="Performance-1"></a> -<h2 class="chapter">5 Performance</h2> +<span id="Performance-1"></span><h2 class="chapter">5 Performance</h2> -<a name="index-performance"></a> +<span id="index-performance"></span> <p>Typically <code>grep</code> is an efficient way to search text. However, it can be quite slow in some cases, and it can search large files where even minor performance tweaking can help significantly. @@ -84,7 +77,7 @@ searching algorithm is used to match a single fixed pattern, and the Aho–Corasick algorithm is used to match multiple fixed patterns. </p> -<a name="index-locales"></a> +<span id="index-locales"></span> <p>Generally speaking <code>grep</code> operates more efficiently in single-byte locales, since it can avoid the special processing needed for multi-byte characters. If your patterns will work just as well @@ -92,31 +85,31 @@ performance considerably. Setting ‘<samp>LC_ALL='C'</samp>’ can be particularly efficient, as <code>grep</code> is tuned for that locale. </p> -<a name="index-case-insensitive-search-1"></a> +<span id="index-case-insensitive-search-1"></span> <p>Outside the ‘<samp>C</samp>’ locale, case-insensitive search, and search for bracket expressions like ‘<samp>[a-z]</samp>’ and ‘<samp>[[=a=]b]</samp>’, can be surprisingly inefficient due to difficulties in fast portable access to concepts like multi-character collating elements. </p> -<a name="index-back_002dreferences"></a> +<span id="index-back_002dreferences"></span> <p>A back-reference such as ‘<samp>\1</samp>’ can hurt performance significantly in some cases, since back-references cannot in general be implemented via a finite state automaton, and instead trigger a backtracking algorithm that can be quite inefficient. For example, although the pattern ‘<samp>^(.*)\1{14}(.*)\2{13}$</samp>’ matches only lines whose -lengths can be written as a sum <em>15x + 14y</em> for nonnegative -integers <em>x</em> and <em>y</em>, the pattern matcher does not perform +lengths can be written as a sum <em class='math'>15x + 14y</em> for nonnegative +integers <em class='math'>x</em> and <em class='math'>y</em>, the pattern matcher does not perform linear Diophantine analysis and instead backtracks through all possible matching strings, using an algorithm that is exponential in the worst case. </p> -<a name="index-holes-in-files"></a> +<span id="index-holes-in-files"></span> <p>On some operating systems that support files with holes—large regions of zeros that are not physically present on secondary storage—<code>grep</code> can skip over the holes efficiently without needing to read the zeros. This optimization is not available if the -<samp>-a</samp> (<samp>--binary-files=text</samp>) option is used (see <a href="File-and-Directory-Selection.html#File-and-Directory-Selection">File and Directory Selection</a>), unless the <samp>-z</samp> (<samp>--null-data</samp>) -option is also used (see <a href="Other-Options.html#Other-Options">Other Options</a>). +<samp>-a</samp> (<samp>--binary-files=text</samp>) option is used (see <a href="File-and-Directory-Selection.html">File and Directory Selection</a>), unless the <samp>-z</samp> (<samp>--null-data</samp>) +option is also used (see <a href="Other-Options.html">Other Options</a>). </p> <p>For more about the algorithms used by <code>grep</code> and about related string matching algorithms, see: @@ -146,10 +139,11 @@ performance of <code>grep</code> in the future. </li></ul> +</div> <hr> <div class="header"> <p> -Next: <a href="Reporting-Bugs.html#Reporting-Bugs" accesskey="n" rel="next">Reporting Bugs</a>, Previous: <a href="Usage.html#Usage" accesskey="p" rel="prev">Usage</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html#Index" title="Index" rel="index">Index</a>]</p> +Next: <a href="Reporting-Bugs.html">Reporting bugs</a>, Previous: <a href="Usage.html">Usage</a>, Up: <a href="index.html">grep</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Index.html" title="Index" rel="index">Index</a>]</p> </div>
