<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in yaml-numeric-parser-fuzzer.cpp</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>eefd620a - [llvm] NFC: Cleanup llvm-yaml-numeric-parser-fuzzer</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp#eefd620a</link>
        <description>[llvm] NFC: Cleanup llvm-yaml-numeric-parser-fuzzer* Use static variables instead of non-trivially destructible global ones.* Remove unused header.Differential Revision: https://reviews.llvm.org/D91600

            List of files:
            /llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp</description>
        <pubDate>Mon, 15 Feb 2021 13:52:46 +0000</pubDate>
        <dc:creator>Kirill Bobyrev &lt;kbobyrev@google.com&gt;</dc:creator>
    </item>
<item>
        <title>171c5fd4 - [llvm] Use llvm::erase_value and llvm::erase_if (NFC)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp#171c5fd4</link>
        <description>[llvm] Use llvm::erase_value and llvm::erase_if (NFC)

            List of files:
            /llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp</description>
        <pubDate>Sat, 02 Jan 2021 17:24:15 +0000</pubDate>
        <dc:creator>Kazu Hirata &lt;kazu@google.com&gt;</dc:creator>
    </item>
<item>
        <title>990061b6 - Fix file header issues in fuzzers. NFC</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp#990061b6</link>
        <description>Fix file header issues in fuzzers. NFCllvm-svn: 354551

            List of files:
            /llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp</description>
        <pubDate>Thu, 21 Feb 2019 07:57:14 +0000</pubDate>
        <dc:creator>Fangrui Song &lt;maskray@google.com&gt;</dc:creator>
    </item>
<item>
        <title>2946cd70 - Update the file headers across all of the LLVM projects in the monorepo</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp#2946cd70</link>
        <description>Update the file headers across all of the LLVM projects in the monorepoto reflect the new license.We understand that people may be surprised that we&apos;re moving the headerentirely to discuss the new license. We checked this carefully with theFoundation&apos;s lawyer and we believe this is the correct approach.Essentially, all code in the project is now made available by the LLVMproject under our new license, so you will see that the license headersinclude that license only. Some of our contributors have contributedcode under our old license, and accordingly, we have retained a copy ofour old license notice in the top-level files in each project andrepository.llvm-svn: 351636

            List of files:
            /llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp</description>
        <pubDate>Sat, 19 Jan 2019 08:50:56 +0000</pubDate>
        <dc:creator>Chandler Carruth &lt;chandlerc@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>bbd2d15d - Use LLVM_BUILTIN_TRAP not __builtin_trap to appease windows builds. NFCI.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp#bbd2d15d</link>
        <description>Use LLVM_BUILTIN_TRAP not __builtin_trap to appease windows builds. NFCI.llvm-svn: 340162

            List of files:
            /llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp</description>
        <pubDate>Mon, 20 Aug 2018 09:49:20 +0000</pubDate>
        <dc:creator>Simon Pilgrim &lt;llvm-dev@redking.me.uk&gt;</dc:creator>
    </item>
<item>
        <title>5f26a642 - [llvm] Make YAML serialization up to 2.5 times faster</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp#5f26a642</link>
        <description>[llvm] Make YAML serialization up to 2.5 times fasterThis patch significantly improves performance of the YAML serializer byoptimizing `YAML::isNumeric` function. This function is called on themost strings and is highly inefficient for two reasons:* It uses `Regex`, which is parsed and compiled each time this  function is called* It uses multiple passes which are not necessaryThis patch introduces stateful ad hoc YAML number parser which does notrely on `Regex`. It also fixes YAML number format inconsistency: currentimplementation supports C-stile octal number format (`01234567`) whichwas present in YAML 1.0 specialization (http://yaml.org/spec/1.0/),[Section 2.4. Tags, Example 2.19] but was deprecated and is no longerpresent in latest YAML 1.2 specification(http://yaml.org/spec/1.2/spec.html), see [Section 10.3.2. TagResolution]. Since the rest of the rest of the implementation does notsupport other deprecated YAML 1.0 numeric features such as sexagecimalnumbers, commas as delimiters it is treated as inconsistency and notlonger supported. This patch also adds unit tests to ensure the validityof proposed implementation.This performance bottleneck was identified while profiling Clangd&apos;sglobal-symbol-builder tool with my colleague @ilya-biryukov. Thesubstantial part of the runtime was spent during a single-thread Reducephase, which concludes with YAML serialization of collected symbolcollection. Regex matching was accountable for approximately 45% of thewhole runtime (which involves sharded Map phase), now it is reduced to18% (which is spent in `clang::clangd::CanonicalIncludes` and can bealso optimized because all used regexes are in fact either suffixmatches or exact matches).`llvm-yaml-numeric-parser-fuzzer` was used to ensure the validity of theproposed regex replacement. Fuzzing for ~60 hours using 10 threads didnot expose any bugs.Benchmarking `global-symbol-builder` (using `hyperfine --warmup 2--min-runs 5 &apos;command 1&apos; &apos;command 2&apos;`) tool by processing a reasonableamount of code (26 source files matched by`clang-tools-extra/clangd/*.cpp` with all transitive includes) confirmedour understanding of the performance bottleneck nature as it speeds upthe command by the factor of 1.6x:| Command | Mean [s] | Min&#8230;Max [s] || this patch (D50839) | 84.7 &#177; 0.6 | 83.3&#8230;84.7 || master (rL339849) | 133.1 &#177; 0.8 | 132.4&#8230;134.6 |Using smaller samples (e.g. by collecting symbols from`clang-tools-extra/clangd/AST.cpp` only) yields even better performanceimprovement, which is expected because Map phase takes less timecompared to Reduce and is 2.05x faster and therefore would significantlyimprove the performance of standalone YAML serializations.| Command | Mean [ms] | Min&#8230;Max [ms] || this patch (D50839) | 3702.2 &#177; 48.7 | 3635.1&#8230;3752.3 || master (rL339849) | 7607.6 &#177; 109.5 | 7533.3&#8230;7796.4 |Reviewed by: zturner, ilya-biryukovDifferential revision: https://reviews.llvm.org/D50839llvm-svn: 340154

            List of files:
            /llvm-project-15.0.7/llvm/tools/llvm-yaml-numeric-parser-fuzzer/yaml-numeric-parser-fuzzer.cpp</description>
        <pubDate>Mon, 20 Aug 2018 07:00:36 +0000</pubDate>
        <dc:creator>Kirill Bobyrev &lt;kbobyrev.opensource@gmail.com&gt;</dc:creator>
    </item>
</channel>
</rss>
