Skip to content

Commit

Permalink
benchmarks simplify to only compare one change against the current pa…
Browse files Browse the repository at this point in the history
…ckage implementation
  • Loading branch information
lue-bird committed Nov 12, 2024
1 parent 5a1a19f commit e60da1a
Show file tree
Hide file tree
Showing 12 changed files with 219 additions and 36,162 deletions.
9 changes: 7 additions & 2 deletions benchmark/elm.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,12 @@
}
},
"test-dependencies": {
"direct": {},
"indirect": {}
"direct": {
"elm-explorations/test": "2.2.0"
},
"indirect": {
"elm/bytes": "1.0.8",
"elm/random": "1.0.0"
}
}
}
94 changes: 35 additions & 59 deletions benchmark/src/Benchmarks.elm
Original file line number Diff line number Diff line change
@@ -1,77 +1,53 @@
module Benchmarks exposing (benchmarks, sample)
module Benchmarks exposing (benchmarks)

import Benchmark
import Benchmark.Alternative
import Bitwise
import Elm.Parser
import Elm.Syntax.File
import ElmSyntaxParserLenient
import ElmSyntaxPrint
import ElmSyntaxPrintDefunctionalizedShortcutEscapeMorePredefine
import ElmSyntaxPrintDefunctionalizedShortcutEscapeMorePredefineMicroOptimized
import ElmSyntaxPrintWithDefunctionalized
import ElmSyntaxPrintWithDefunctionalizedAppendExact
import ElmSyntaxPrintWithDefunctionalizedAppendExactShortcutEscape
import ElmSyntaxPrintWithDefunctionalizedAppendExactShortcutEscapeCachedLineSpread
import ElmSyntaxPrintDefunctionalized
import ElmSyntaxPrintDefunctionalizedFasterIndent
import Print
import PrintFasterIndent


benchmarks : Benchmark.Benchmark
benchmarks =
Benchmark.describe "elm-syntax-format"
[ Benchmark.Alternative.rank "printing"
(\f -> f ())
[ {- ( "defunctionalized naive"
, \() ->
sample
|> Maybe.map ElmSyntaxPrintWithDefunctionalized.module_
|> Maybe.map ElmSyntaxPrintWithDefunctionalized.toString
)
,
( "defunctionalized, append exact"
, \() ->
sample
|> Maybe.map ElmSyntaxPrintWithDefunctionalizedAppendExact.module_
|> Maybe.map ElmSyntaxPrintWithDefunctionalizedAppendExact.toString
),
( "defunctionalized, append exact, shortcut escape"
, \() ->
sample
|> Maybe.map ElmSyntaxPrintWithDefunctionalizedAppendExactShortcutEscape.module_
-}
( "defunctionalized, shortcut escape, more predefine, micro-optimize"
, \() ->
sample
|> Maybe.map ElmSyntaxPrintDefunctionalizedShortcutEscapeMorePredefineMicroOptimized.module_
|> Maybe.map ElmSyntaxPrintDefunctionalizedShortcutEscapeMorePredefineMicroOptimized.toString
)
, ( "defunctionalized, shortcut escape, more predefine"
, \() ->
sample
|> Maybe.map ElmSyntaxPrintDefunctionalizedShortcutEscapeMorePredefine.module_
|> Maybe.map ElmSyntaxPrintDefunctionalizedShortcutEscapeMorePredefine.toString
)

{- , ( "Int -> String, composition"
, \() ->
sample
|> Maybe.map ElmSyntaxPrint.module_
|> Maybe.map ElmSyntaxPrint.toString
)
-}
{- , ( "Int -> String, less composition"
, \() ->
sample
|> Maybe.map ElmSyntaxPrintLessComposition.module_
|> Maybe.map ElmSyntaxPrintLessComposition.toString
)
-}
]
[ case maybeSample of
Nothing ->
Benchmark.describe "sample didn't parse" []

Just sample ->
Benchmark.Alternative.rank "printing"
(\f -> f sample)
[ ( "current package implementation"
, moduleToStringCurrentPackage
)
, ( "faster indent"
, moduleToStringFasterIndent
)
]
]


sample : Maybe Elm.Syntax.File.File
sample =
moduleToStringCurrentPackage : Elm.Syntax.File.File -> String
moduleToStringCurrentPackage syntaxModule =
syntaxModule
|> ElmSyntaxPrintDefunctionalized.module_
|> Print.toString


moduleToStringFasterIndent : Elm.Syntax.File.File -> String
moduleToStringFasterIndent syntaxModule =
syntaxModule
|> ElmSyntaxPrintDefunctionalizedFasterIndent.module_
|> PrintFasterIndent.toString


maybeSample : Maybe Elm.Syntax.File.File
maybeSample =
-- taken from https://github.com/dwayne/elm-conduit/blob/master/src/Main.elm
-- Thanks! Below it's license
{-
Expand Down
Loading

0 comments on commit e60da1a

Please sign in to comment.