From a626fc5dc1dd5e4763b595afb341e06ec06feb75 Mon Sep 17 00:00:00 2001 From: Ulya Trofimovich Date: Sat, 5 Aug 2017 09:33:30 +0100 Subject: [PATCH] Paper on Lookahead TDFA: added benchmark results and graphs. --- re2c/doc/tdfa/img/bench/data | 47 ++++++++++ re2c/doc/tdfa/img/bench/size_gcc_clang.png | Bin 0 -> 45417 bytes re2c/doc/tdfa/img/bench/size_tcc_pcc.png | Bin 0 -> 51066 bytes re2c/doc/tdfa/img/bench/time_gcc_clang.png | Bin 0 -> 34706 bytes re2c/doc/tdfa/img/bench/time_tcc_pcc.png | Bin 0 -> 37436 bytes re2c/doc/tdfa/tdfa.tex | 101 +++++++-------------- 6 files changed, 82 insertions(+), 66 deletions(-) create mode 100644 re2c/doc/tdfa/img/bench/data create mode 100644 re2c/doc/tdfa/img/bench/size_gcc_clang.png create mode 100644 re2c/doc/tdfa/img/bench/size_tcc_pcc.png create mode 100644 re2c/doc/tdfa/img/bench/time_gcc_clang.png create mode 100644 re2c/doc/tdfa/img/bench/time_tcc_pcc.png diff --git a/re2c/doc/tdfa/img/bench/data b/re2c/doc/tdfa/img/bench/data new file mode 100644 index 00000000..d972222e --- /dev/null +++ b/re2c/doc/tdfa/img/bench/data @@ -0,0 +1,47 @@ +1 TDFA(0) 45 452 250 63 135 339 247 12.86 10.27 99.09 55.83 +2 TDFA(0) 18 70 32 15 31 41 31 7.66 5.47 71.60 33.90 +3 TDFA(0) 23 252 152 39 75 203 155 10.01 6.01 111.76 73.75 +4 TDFA(0) 16 26 17 11 19 23 19 8.34 3.55 102.72 59.84 + + +1 TDFA(1) 42 457 183 55 139 213 151 6.43 5.59 67.00 27.93 +2 TDFA(1) 16 73 33 15 35 41 31 5.30 3.83 63.30 26.74 +3 TDFA(1) 20 256 115 35 75 138 103 6.78 3.23 104.36 51.00 +4 TDFA(1) 13 28 19 11 19 25 23 6.04 3.12 100.28 47.85 + + +1 DFA -- 414 135 35 111 145 91 4.96 4.46 62.04 23.67 +2 DFA -- 69 25 15 31 31 23 4.90 3.34 62.00 23.59 +3 DFA -- 198 67 23 55 73 55 7.06 3.19 97.87 51.37 +4 DFA -- 22 10 11 15 14 15 5.89 2.66 97.95 47.01 + + +1 TDFA(0) 45 452 295 63 59 352 267 11.95 10.30 65.47 36.95 +2 TDFA(0) 18 70 31 15 19 31 31 7.12 7.30 31.81 17.44 +3 TDFA(0) 23 252 165 39 35 181 151 8.36 8.58 39.51 31.81 +4 TDFA(0) 16 26 20 11 11 22 23 7.14 6.67 23.19 18.73 + + +1 TDFA(1) 42 457 171 55 51 144 111 6.01 5.40 15.94 10.53 +2 TDFA(1) 16 73 29 15 19 29 27 5.24 4.43 13.50 8.84 +3 TDFA(1) 20 256 127 55 31 130 107 5.21 4.81 12.02 10.01 +4 TDFA(1) 13 28 17 11 11 19 19 4.02 3.08 8.56 6.90 + + +1 DFA -- 414 123 35 39 75 51 4.71 4.76 10.88 5.61 +2 DFA -- 69 19 11 15 15 15 4.64 3.94 11.00 5.77 +3 DFA -- 198 60 19 23 39 35 4.04 4.06 9.13 8.17 +4 DFA -- 22 7 11 11 8 11 3.90 2.52 8.00 4.40 + + +1 TDFA(0) 2054 625 816 275 267 1107 839 14.11 13.25 105.58 59.60 +2 TDFA(0) 72 106 57 23 55 73 55 8.61 6.77 72.96 34.63 +3 TDFA(0) 611 280 426 127 151 536 463 10.39 7.51 127.35 75.23 +4 TDFA(0) 79 29 33 19 23 43 39 7.43 4.05 105.06 61.74 + + +1 TDFA(1) 149 462 200 63 147 233 167 6.47 5.90 68.43 29.09 +2 TDFA(1) 44 82 39 19 43 49 39 6.00 5.39 63.79 27.37 +3 TDFA(1) 64 256 131 43 87 156 123 6.74 3.54 103.91 51.08 +4 TDFA(1) 40 31 28 15 23 36 31 6.27 3.32 101.79 48.15 + diff --git a/re2c/doc/tdfa/img/bench/size_gcc_clang.png b/re2c/doc/tdfa/img/bench/size_gcc_clang.png new file mode 100644 index 0000000000000000000000000000000000000000..4a221425ec1265021a82c0a660ba099726568405 GIT binary patch literal 45417 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 literal 0 HcmV?d00001 diff --git a/re2c/doc/tdfa/img/bench/size_tcc_pcc.png b/re2c/doc/tdfa/img/bench/size_tcc_pcc.png new file mode 100644 index 0000000000000000000000000000000000000000..552b423fe2955669df5d22f342964dee7ba54807 GIT binary patch literal 51066 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 b`6-!cmAExX96u=!)WG2B>gTe~DWM4fU2qx@ literal 0 HcmV?d00001 diff --git a/re2c/doc/tdfa/img/bench/time_gcc_clang.png b/re2c/doc/tdfa/img/bench/time_gcc_clang.png new file mode 100644 index 0000000000000000000000000000000000000000..17f1c38561a44c42233274de51995431c97112b9 GIT binary patch literal 34706 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 A*Z=?k literal 0 HcmV?d00001 diff --git a/re2c/doc/tdfa/img/bench/time_tcc_pcc.png b/re2c/doc/tdfa/img/bench/time_tcc_pcc.png new file mode 100644 index 0000000000000000000000000000000000000000..24cfbacf8fc1b3623569dccc704db30be9c8a420 GIT binary patch literal 37436 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 literal 0 HcmV?d00001 diff --git a/re2c/doc/tdfa/tdfa.tex b/re2c/doc/tdfa/tdfa.tex index 2fb0c8c1..f88f51cb 100644 --- a/re2c/doc/tdfa/tdfa.tex +++ b/re2c/doc/tdfa/tdfa.tex @@ -2155,7 +2155,7 @@ Tag $1$ is deterministic for both automata. \begin{multicols}{2} From these examples we can draw the following conclusions. -First, TDFA(1) are generally better than TDFA(0): delaying register operations allows to get rid of many conflicts. +First, TDFA(1) is generally better than TDFA(0): delaying register operations allows to get rid of many conflicts. Second, both kinds of automata are only suitable for RE with modest levels of ambiguity and low submatch detalisation: TDFA can be applied to full parsing, but other methods would probably outperform them. However, RE of such form are very common in practice and for them TDFA can be very efficient. @@ -2271,7 +2271,7 @@ we can also use it for backup. \subsection*{Fixed tags} -It may happen that two tags in TRE are bound: separated by a fixed number of characters, so that +It may happen that two tags in TRE are separated by a fixed number of characters: each offset of one tag is equal to the corresponding offset of the other tag plus some static offset. %the value of one tag is always equal to the value of the other plus some static offset. In this case we can track only one of the tags; we say that the second tag is \emph{fixed} on the first one. @@ -2489,28 +2489,20 @@ and visualized on subsequent plots. \hline \hline \multicolumn{12}{|c|}{re2c} \\ \hline - TDFA(0) & 45 & 452 & 250 & 63 & 135 & 339 & 247 & 12.88 & 10.31 & 99.12 & 55.91 \\ - TDFA(1) & 42 & 457 & 183 & 55 & 139 & 213 & 151 & 6.42 & 5.59 & 67.04 & 27.96 \\ - DFA & -- & 414 & 135 & 35 & 111 & 145 & 91 & 4.96 & 4.46 & 62.15 & 23.74 \\ -% TDFA(0) & 45 & 452 & 255712 & 63544 & 137320 & 346408 & 252024 & 12.88 & 10.31 & 99.12 & 55.91 \\ -% TDFA(1) & 42 & 457 & 186600 & 55352 & 141416 & 217160 & 153720 & 6.42 & 5.59 & 67.04 & 27.96 \\ -% DFA & -- & 414 & 137816 & 34864 & 112728 & 148048 & 92256 & 4.96 & 4.46 & 62.15 & 23.74 \\ + TDFA(0) & 45 & 452 & 250 & 63 & 135 & 339 & 247 & 12.86 & 10.27 & 99.09 & 55.83 \\ + TDFA(1) & 42 & 457 & 183 & 55 & 139 & 213 & 151 & 6.43 & 5.59 & 67.00 & 27.93 \\ + DFA & -- & 414 & 135 & 35 & 111 & 145 & 91 & 4.96 & 4.46 & 62.04 & 23.67 \\ \hline \hline \multicolumn{12}{|c|}{re2c -b} \\ \hline - TDFA(0) & 45 & 452 & 295 & 63 & 59 & 352 & 267 & 11.96 & 10.31 & 65.53 & 36.98 \\ - TDFA(1) & 42 & 457 & 171 & 55 & 51 & 144 & 111 & 6.01 & 5.40 & 15.96 & 10.59 \\ - DFA & -- & 414 & 123 & 35 & 39 & 75 & 51 & 4.73 & 4.78 & 10.93 & 5.63 \\ -% TDFA(0) & 45 & 452 & 301968 & 63544 & 59496 & 360136 & 272504 & 11.96 & 10.31 & 65.53 & 36.98 \\ -% TDFA(1) & 42 & 457 & 174903 & 55352 & 51304 & 147016 & 112760 & 6.01 & 5.40 & 15.96 & 10.59 \\ -% DFA & -- & 414 & 125389 & 34864 & 39000 & 76272 & 51296 & 4.73 & 4.78 & 10.93 & 5.63 \\ + TDFA(0) & 45 & 452 & 295 & 63 & 59 & 352 & 267 & 11.95 & 10.30 & 65.47 & 36.95 \\ + TDFA(1) & 42 & 457 & 171 & 55 & 51 & 144 & 111 & 6.01 & 5.40 & 15.94 & 10.53 \\ + DFA & -- & 414 & 123 & 35 & 39 & 75 & 51 & 4.71 & 4.76 & 10.88 & 5.61 \\ \hline \hline \multicolumn{12}{|c|}{re2c --no-optimize-tags} \\ \hline - TDFA(0) & 2054 & 625 & 816 & 275 & 267 & 1107 & 839 & 14.14 & 13.24 & 105.87 & 59.71 \\ - TDFA(1) & 149 & 462 & 200 & 63 & 147 & 233 & 167 & 6.64 & 5.90 & 68.50 & 29.39 \\ -% TDFA(0) & 2054 & 625 & 835285 & 280632 & 272488 & 1132616 & 858232 & 14.14 & 13.24 & 105.87 & 59.71 \\ -% TDFA(1) & 149 & 462 & 204119 & 63544 & 149608 & 238568 & 170104 & 6.64 & 5.90 & 68.50 & 29.39 \\ + TDFA(0) & 2054 & 625 & 816 & 275 & 267 & 1107 & 839 & 14.11 & 13.25 & 105.58 & 59.60 \\ + TDFA(1) & 149 & 462 & 200 & 63 & 147 & 233 & 167 & 6.47 & 5.90 & 68.43 & 29.09 \\ \hline \end{tabular}\\* \medskip @@ -2536,28 +2528,20 @@ and visualized on subsequent plots. \hline \hline \multicolumn{12}{|c|}{re2c} \\ \hline - TDFA(0) & 18 & 70 & 32 & 15 & 31 & 41 & 31 & 7.65 & 5.50 & 71.60 & 33.96 \\ - TDFA(1) & 16 & 73 & 33 & 15 & 35 & 41 & 31 & 5.31 & 3.83 & 63.36 & 26.78 \\ - DFA & -- & 69 & 25 & 15 & 31 & 31 & 23 & 4.90 & 3.34 & 62.12 & 23.64 \\ -% TDFA(0) & & & & 14392 & 30816 & 41160 & 30840 & 7.65 & 5.50 & 71.60 & 33.96 \\ -% TDFA(1) & & & & 14392 & 34912 & 41704 & 30840 & 5.31 & 3.83 & 63.36 & 26.78 \\ -% DFA & -- & 69 & 24937 & 14384 & 30808 & 31280 & 22624 & 4.90 & 3.34 & 62.12 & 23.64 \\ + TDFA(0) & 18 & 70 & 32 & 15 & 31 & 41 & 31 & 7.66 & 5.47 & 71.60 & 33.90 \\ + TDFA(1) & 16 & 73 & 33 & 15 & 35 & 41 & 31 & 5.30 & 3.83 & 63.30 & 26.74 \\ + DFA & -- & 69 & 25 & 15 & 31 & 31 & 23 & 4.90 & 3.34 & 62.00 & 23.59 \\ \hline \hline \multicolumn{12}{|c|}{re2c -b} \\ \hline - TDFA(0) & 18 & 70 & 31 & 15 & 19 & 31 & 31 & 7.12 & 7.31 & 31.85 & 17.47 \\ - TDFA(1) & 16 & 73 & 29 & 15 & 19 & 29 & 27 & 5.25 & 4.42 & 13.52 & 8.86 \\ - DFA & -- & 69 & 19 & 11 & 15 & 15 & 15 & 4.66 & 3.96 & 11.00 & 5.79 \\ -% TDFA(0) & & & & 14392 & 18528 & 31336 & 30840 & 7.12 & 7.31 & 31.85 & 17.47 \\ -% TDFA(1) & & & & 14392 & 18528 & 29288 & 26744 & 5.25 & 4.42 & 13.52 & 8.86 \\ -% DFA & -- & 69 & 18472 & 10288 & 14424 & 14832 & 14432 & 4.66 & 3.96 & 11.00 & 5.79 \\ + TDFA(0) & 18 & 70 & 31 & 15 & 19 & 31 & 31 & 7.12 & 7.30 & 31.81 & 17.44 \\ + TDFA(1) & 16 & 73 & 29 & 15 & 19 & 29 & 27 & 5.24 & 4.43 & 13.50 & 8.84 \\ + DFA & -- & 69 & 19 & 11 & 15 & 15 & 15 & 4.64 & 3.94 & 11.00 & 5.77 \\ \hline \hline \multicolumn{12}{|c|}{re2c --no-optimize-tags} \\ \hline - TDFA(0) & 72 & 106 & 57 & 23 & 55 & 73 & 55 & 8.61 & 6.77 & 73.05 & 34.68 \\ - TDFA(1) & 44 & 82 & 39 & 19 & 43 & 49 & 39 & 6.01 & 5.38 & 63.87 & 27.44 \\ -% TDFA(0) & 72 & 106 & 57956 & 22584 & 55400 & 73928 & 55416 & 8.61 & 6.77 & 73.05 & 34.68 \\ -% TDFA(1) & 44 & 82 & 39674 & 18488 & 43112 & 49480 & 39032 & 6.01 & 5.38 & 63.87 & 27.44 \\ + TDFA(0) & 72 & 106 & 57 & 23 & 55 & 73 & 55 & 8.61 & 6.77 & 72.96 & 34.63 \\ + TDFA(1) & 44 & 82 & 39 & 19 & 43 & 49 & 39 & 6.00 & 5.39 & 63.79 & 27.37 \\ \hline \end{tabular}\\* \medskip @@ -2584,28 +2568,20 @@ and visualized on subsequent plots. \hline \hline \multicolumn{12}{|c|}{re2c} \\ \hline - TDFA(0) & 23 & 252 & 152 & 39 & 75 & 203 & 155 & 10.03 & 6.10 & 111.90 & 73.81 \\ - TDFA(1) & 20 & 256 & 115 & 35 & 75 & 138 & 103 & 6.75 & 3.24 & 104.56 & 50.90 \\ - DFA & -- & 198 & 67 & 23 & 55 & 73 & 55 & 7.05 & 3.21 & 97.89 & 51.43 \\ -% TDFA(0) & 23 & 252 & 154776 & 38960 & 75864 & 207600 & 157792 & 10.03 & 6.10 & 111.90 & 73.81 \\ -% TDFA(1) & 20 & 256 & 117498 & 34864 & 75864 & 140560 & 104544 & 6.75 & 3.24 & 104.56 & 50.90 \\ -% DFA & -- & 198 & 67617 & 22576 & 55384 & 74384 & 55392 & 7.05 & 3.21 & 97.89 & 51.43 \\ + TDFA(0) & 23 & 252 & 152 & 39 & 75 & 203 & 155 & 10.01 & 6.01 & 111.76 & 73.75 \\ + TDFA(1) & 20 & 256 & 115 & 35 & 75 & 138 & 103 & 6.78 & 3.23 & 104.36 & 51.00 \\ + DFA & -- & 198 & 67 & 23 & 55 & 73 & 55 & 7.06 & 3.19 & 97.87 & 51.37 \\ \hline \hline \multicolumn{12}{|c|}{re2c -b} \\ \hline - TDFA(0) & 23 & 252 & 165 & 39 & 35 & 181 & 151 & 8.40 & 8.56 & 39.56 & 31.84 \\ - TDFA(1) & 20 & 256 & 127 & 55 & 31 & 130 & 107 & 5.23 & 4.83 & 12.04 & 10.02 \\ - DFA & -- & 198 & 60 & 19 & 23 & 39 & 35 & 4.05 & 4.08 & 9.23 & 8.19 \\ -% TDFA(0) & 23 & 252 & 168684 & 38960 & 34904 & 186704 & 153696 & 8.40 & 8.56 & 39.56 & 31.84 \\ -% TDFA(1) & 20 & 256 & 129322 & 55344 & 30808 & 132912 & 108640 & 5.23 & 4.83 & 12.04 & 10.02 \\ -% DFA & -- & 198 & 60759 & 18480 & 22616 & 39376 & 34912 & 4.05 & 4.08 & 9.23 & 8.19 \\ + TDFA(0) & 23 & 252 & 165 & 39 & 35 & 181 & 151 & 8.36 & 8.58 & 39.51 & 31.81 \\ + TDFA(1) & 20 & 256 & 127 & 55 & 31 & 130 & 107 & 5.21 & 4.81 & 12.02 & 10.01 \\ + DFA & -- & 198 & 60 & 19 & 23 & 39 & 35 & 4.04 & 4.06 & 9.13 & 8.17 \\ \hline \hline \multicolumn{12}{|c|}{re2c --no-optimize-tags} \\ \hline - TDFA(0) & 611 & 280 & 426 & 127 & 151 & 536 & 463 & 10.41 & 7.56 & 127.48 & 75.46 \\ - TDFA(1) & 64 & 256 & 131 & 43 & 87 & 156 & 123 & 6.74 & 3.55 & 103.98 & 51.12 \\ -% TDFA(0) & 611 & 280 & 435350 & 129072 & 153696 & 548272 & 473184 & 10.41 & 7.56 & 127.48 & 75.46 \\ -% TDFA(1) & 64 & 256 & 133518 & 43056 & 88160 & 159248 & 125024 & 6.74 & 3.55 & 103.98 & 51.12 \\ + TDFA(0) & 611 & 280 & 426 & 127 & 151 & 536 & 463 & 10.39 & 7.51 & 127.35 & 75.23 \\ + TDFA(1) & 64 & 256 & 131 & 43 & 87 & 156 & 123 & 6.74 & 3.54 & 103.91 & 51.08 \\ \hline \end{tabular}\\* \medskip @@ -2632,28 +2608,20 @@ and visualized on subsequent plots. \hline \hline \multicolumn{12}{|c|}{re2c} \\ \hline - TDFA(0) & 16 & 26 & 17 & 11 & 19 & 23 & 19 & 8.34 & 3.57 & 102.84 & 59.88 \\ - TDFA(1) & 13 & 28 & 19 & 11 & 19 & 25 & 23 & 6.06 & 3.14 & 100.33 & 48.02 \\ - DFA & -- & 22 & 10 & 11 & 15 & 14 & 15 & 5.91 & 2.68 & 98.10 & 47.25 \\ -% TDFA(0) & & & & 10288 & 18520 & 22960 & 18528 & 8.34 & 3.57 & 102.84 & 59.88 \\ -% TDFA(1) & & & & 10288 & 18520 & 25424 & 22624 & 6.06 & 3.14 & 100.33 & 48.02 \\ -% DFA & -- & & & 10288 & 14424 & 14256 & 14432 & 5.91 & 2.68 & 98.10 & 47.25 \\ + TDFA(0) & 16 & 26 & 17 & 11 & 19 & 23 & 19 & 8.34 & 3.55 & 102.72 & 59.84 \\ + TDFA(1) & 13 & 28 & 19 & 11 & 19 & 25 & 23 & 6.04 & 3.12 & 100.28 & 47.85 \\ + DFA & -- & 22 & 10 & 11 & 15 & 14 & 15 & 5.89 & 2.66 & 97.95 & 47.01 \\ \hline \hline \multicolumn{12}{|c|}{re2c -b} \\ \hline - TDFA(0) & 16 & 26 & 20 & 11 & 11 & 22 & 23 & 7.17 & 6.66 & 23.21 & 18.77 \\ - TDFA(1) & 13 & 28 & 17 & 11 & 11 & 19 & 19 & 4.05 & 3.09 & 8.59 & 6.94 \\ - DFA & -- & 22 & 7 & 11 & 11 & 8 & 11 & 3.92 & 2.56 & 8.06 & 4.42 \\ -% TDFA(0) & & & & 10288 & 10328 & 22352 & 22624 & 7.17 & 6.66 & 23.21 & 18.77 \\ -% TDFA(1) & & & & 10288 & 10328 & 18960 & 18528 & 4.05 & 3.09 & 8.59 & 6.94 \\ -% DFA & -- & & 6483 & 10288 & 10328 & 7888 & 10336 & 3.92 & 2.56 & 8.06 & 4.42 \\ + TDFA(0) & 16 & 26 & 20 & 11 & 11 & 22 & 23 & 7.14 & 6.67 & 23.19 & 18.73 \\ + TDFA(1) & 13 & 28 & 17 & 11 & 11 & 19 & 19 & 4.02 & 3.08 & 8.56 & 6.90 \\ + DFA & -- & 22 & 7 & 11 & 11 & 8 & 11 & 3.90 & 2.52 & 8.00 & 4.40 \\ \hline \hline \multicolumn{12}{|c|}{re2c --no-optimize-tags} \\ \hline - TDFA(0) & 79 & 29 & 33 & 19 & 23 & 43 & 39 & 7.46 & 3.94 & 105.22 & 61.72 \\ - TDFA(1) & 40 & 31 & 28 & 15 & 23 & 36 & 31 & 6.29 & 3.33 & 102.00 & 48.22 \\ -% TDFA(0) & 79 & 29 & 33745 & 18480 & 22624 & 43504 & 39008 & 7.46 & 3.94 & 105.22 & 61.72 \\ -% TDFA(1) & 40 & 31 & 28013 & 14384 & 22624 & 36080 & 30816 & 6.29 & 3.33 & 102.00 & 48.22 \\ + TDFA(0) & 79 & 29 & 33 & 19 & 23 & 43 & 39 & 7.43 & 4.05 & 105.06 & 61.74 \\ + TDFA(1) & 40 & 31 & 28 & 15 & 23 & 36 & 31 & 6.27 & 3.32 & 101.79 & 48.15 \\ \hline \end{tabular}\\* \medskip @@ -2745,6 +2713,7 @@ Premnogoe spasibo drugu na bukvu S ! ! ! :) \item \! [Cox10] Russ Cox, \textit{"Regular Expression Matching in the Wild"}, March 2010, \\ https://swtch.com/\textasciitilde rsc/regexp/regexp3.html + \item https://github.com/google/re2/issues/146 \end{enumerate} -- 2.40.0