Permalink
Commits on Apr 19, 2018
  1. Merge pull request #1 from andrewthad/correct_http_benchmarks

    bgamari committed Apr 19, 2018
    Correct http benchmarks
Commits on Mar 20, 2018
  1. Change character predicate to not use inClass. Add note about the imp…

    andrewthad committed Mar 20, 2018
    …ossibility of matching the performance of warp.
Commits on Mar 19, 2018
  1. Correct the http benchmarks. There two two unrelated issues

    andrewthad committed Mar 19, 2018
    with them. The first was that the samples had extra newline
    breaks in them which would cause the request and the response
    to be parsed incorrectly. The second was that the warp
    request parser was used incorrectly. It needs to be fed a
    list of bytestring that has already been split on newlines.
    The results of the changes are that the request parsers for
    both warp and attoparsec are significantly slower. The
    warp one is about 15x slower than it previously was because
    it previously did almost no work. It is not totally clear
    why the attoparsec one is slower, but it is 3x slower than
    it previously was.
Commits on Feb 5, 2018
  1. Merge pull request #138 from vaibhavsagar/patch-1

    bgamari committed Feb 5, 2018
    Update Types.hs
  2. Update Types.hs

    vaibhavsagar committed Feb 5, 2018
    Reformat the definition of `many` to highlight the similarity to `some`.
Commits on Jan 12, 2018
  1. Bump to 0.13.2.2

    bgamari committed Jan 12, 2018
  2. Merge branch 'fix-137'

    bgamari committed Jan 12, 2018
  3. Try bumping 7.0 and 7.2 GHC versions in tested-with

    bgamari committed Jan 12, 2018
    7.0.1 panics while building bytestring-builder.
  4. Regenerate travis file

    bgamari committed Jan 12, 2018
  5. Fix compatibility with GHC 8.4

    bgamari committed Jan 12, 2018
    This broken due to 1e77033. Fixes #137.
  6. Add myself as a maintainer

    bgamari committed Jan 12, 2018
  7. Bump to 0.13.2.1

    bgamari committed Jan 12, 2018
Commits on Jan 11, 2018
  1. Fix asciiCI performance

    k7k7 committed Jan 11, 2018
    Fix #135
Commits on Aug 1, 2017
  1. Update changelog

    bgamari committed Aug 1, 2017
  2. Bump to 0.13.2.0

    bgamari committed Aug 1, 2017
  3. Merge pull request #132 from hvr/pr/issue-131

    bgamari committed Aug 1, 2017
    Fix test-suite build failures "with GHC 8.2.1"
  4. Fix test-suite build failures "with GHC 8.2.1"

    hvr committed Aug 1, 2017
    The incomplete `other-modules` reported in #131 was a red-herring,
    the actual problem was the missing upper bound on QuickCheck 2.10
    which introduced semantic changes incompatible with the testsuite.
    
    Fixes #131
Commits on Jul 31, 2017
Commits on Dec 22, 2016
  1. Make pure strict in position

    bgamari committed Dec 22, 2016
    This is inconsistent with the behavior of (>>=) and is consequently a violation
    of the monad laws. Thanks for @dfeuer for noticing this. Fixes #126.
Commits on Sep 15, 2016
  1. Bump to 0.13.1.0

    bgamari committed Sep 15, 2016
  2. Update changelog for 0.13.1.0

    bgamari committed Sep 15, 2016
Commits on Jun 30, 2016
  1. Make code future proof by adding MonadFail/Semigroup instances

    hvr authored and bgamari committed Mar 2, 2016
    This patch makes the code future proof under the MonadFail and Semigroup
    proposals by adding instances in a CPP-avoiding way.
    
    Moreover, Monad instance definitions are refactored in a canonical form.
    
    With this patch, attoparsec is warning free with GHC 8.0 under
    
      -Wall -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
    
    (Compilation of attorparsec with GHCs back till 7.0.4 is warning-free as well)
Commits on Jun 23, 2016
  1. Add regression test for #105

    wereHamster committed Jun 23, 2016
Commits on May 16, 2016
  1. Merge pull request #120 from RyanGlScott/master

    bgamari committed May 16, 2016
    Make cabal sdist package up the benchmarks correctly
Commits on Apr 21, 2016
  1. Inlined Text.takeWhile and takeWhile1

    bgamari committed Apr 6, 2016
    Inlining these functions can improve code generation significantly when
    the predicate is statically known as it avoids boxing every parsed
    character. Unfortunately, marking `takeWhile` itself as `INLINEABLE`
    isn't sufficient to convince GHC to inline it.
    
    Moreover, we refactor things to avoid the allocations associated with
    the chunk accumulation list unless necessary.
    
    Previously things looked like,
    
        benchmarking takeWhile/T isAlpha
        time                 32.33 μs   (31.70 μs .. 33.25 μs)
                             0.994 R²   (0.988 R² .. 0.998 R²)
        mean                 33.02 μs   (32.36 μs .. 33.92 μs)
        std dev              2.687 μs   (2.086 μs .. 3.476 μs)
        variance introduced by outliers: 78% (severely inflated)
    
        benchmarking takeWhile/TL isAlpha
        time                 71.00 μs   (69.29 μs .. 72.83 μs)
                             0.991 R²   (0.985 R² .. 0.996 R²)
        mean                 71.60 μs   (69.94 μs .. 74.58 μs)
        std dev              7.358 μs   (5.428 μs .. 10.73 μs)
        variance introduced by outliers: 83% (severely inflated)
    
        benchmarking takeWhile1/T isAlpha
        time                 34.64 μs   (33.34 μs .. 36.26 μs)
                             0.989 R²   (0.985 R² .. 0.994 R²)
        mean                 34.93 μs   (34.04 μs .. 35.91 μs)
        std dev              3.249 μs   (2.821 μs .. 3.950 μs)
        variance introduced by outliers: 82% (severely inflated)
    
        benchmarking takeWhile1/TL isAlpha
        time                 68.30 μs   (66.59 μs .. 70.39 μs)
                             0.994 R²   (0.991 R² .. 0.998 R²)
        mean                 67.84 μs   (66.53 μs .. 69.77 μs)
        std dev              5.139 μs   (3.444 μs .. 7.793 μs)
        variance introduced by outliers: 73% (severely inflated)
    
    Now things look like,
    
        benchmarking takeWhile/T isAlpha
        time                 12.22 μs   (12.16 μs .. 12.31 μs)
                             1.000 R²   (1.000 R² .. 1.000 R²)
        mean                 12.29 μs   (12.23 μs .. 12.36 μs)
        std dev              222.0 ns   (180.4 ns .. 280.2 ns)
        variance introduced by outliers: 16% (moderately inflated)
    
        benchmarking takeWhile/TL isAlpha
        time                 43.13 μs   (42.77 μs .. 43.58 μs)
                             0.999 R²   (0.998 R² .. 1.000 R²)
        mean                 43.28 μs   (42.85 μs .. 44.06 μs)
        std dev              1.894 μs   (1.267 μs .. 3.137 μs)
        variance introduced by outliers: 48% (moderately inflated)
    
        benchmarking takeWhile1/T isAlpha
        time                 13.37 μs   (13.22 μs .. 13.57 μs)
                             0.999 R²   (0.998 R² .. 0.999 R²)
        mean                 13.29 μs   (13.14 μs .. 13.44 μs)
        std dev              536.0 ns   (463.2 ns .. 641.2 ns)
        variance introduced by outliers: 48% (moderately inflated)
    
        benchmarking takeWhile1/TL isAlpha
        time                 42.33 μs   (42.18 μs .. 42.59 μs)
                             0.999 R²   (0.998 R² .. 0.999 R²)
        mean                 43.72 μs   (43.22 μs .. 44.45 μs)
        std dev              1.957 μs   (1.491 μs .. 2.486 μs)
        variance introduced by outliers: 50% (moderately inflated)
    
    Moreover, this produces a similar >3x speedup in an HTML5 parser that I
    have.
  2. Force inlining of Buffer mempty and mappend

    bgamari committed Apr 6, 2016
    Just to make sure.