guida-lang/compiler

review performance

Closed this issue · 3 comments

An option to explore is to use worker threads.

Running elm-review --template jfmengels/elm-review-performance/example --rules NoUnoptimizedRecursion currently returns found 497 errors in 54 files. Not sure if fixing these would affect the performance.

Current time to run the self-hosting compilation is around 20 seconds (having deleted ~/.guida and guida-stuff directories):

% time guida make --optimize --output=bin/guida.js src/Terminal/Main.elm
Starting downloads...

  ● andre-dietrich/parser-combinators 4.1.0
  ● elm/time 1.0.0
  ● elm/random 1.0.0
  ● elm/regex 1.0.0
  ● elm/html 1.0.0
  ● elm/parser 1.1.0
  ● fredcy/elm-parseint 2.0.1
  ● elm/virtual-dom 1.0.3
  ● elm/json 1.1.3
  ● pilatch/flip 1.0.0
  ● elm/url 1.0.0
  ● dasch/levenshtein 1.0.3
  ● elm-community/array-extra 2.6.0
  ● rtfeldman/elm-hex 1.0.0
  ● elm-community/list-extra 8.7.0
  ● zwilias/elm-rosetree 1.5.0
  ● elm-community/maybe-extra 5.3.0
  ● elm/bytes 1.0.8
  ● elm-community/basics-extra 4.1.0
  ● guida-lang/glsl 1.0.0
  ● the-sett/elm-pretty-printer 3.1.0
  ● obiloud/numeric-decimal 3.0.1
  ● elm/core 1.0.5
  ● guida-lang/graph 1.0.0
  ● elm-explorations/test 2.2.0

Dependencies ready!           
Success! Compiled 141 modules.

    Terminal.Main ───> bin/guida.js

guida make --optimize --output=bin/guida.js src/Terminal/Main.elm  19.59s user 1.07s system 106% cpu 19.450 total

Compared to elm, which runs in about 6 seconds (having deleted ~/.elm and elm-stuff directories):

% time elm make --optimize --output=bin/guida.js src/Terminal/Main.elm  
Starting downloads...

  ● andre-dietrich/parser-combinators 4.1.0
  ● dasch/levenshtein 1.0.3
  ● zwilias/elm-rosetree 1.5.0
  ● elm/regex 1.0.0
  ● elm/random 1.0.0
  ● elm/time 1.0.0
  ● elm/url 1.0.0
  ● elm/parser 1.1.0
  ● elm/bytes 1.0.8
  ● elm/json 1.1.3
  ● elm/html 1.0.0
  ● rtfeldman/elm-hex 1.0.0
  ● the-sett/elm-pretty-printer 3.1.0
  ● pilatch/flip 1.0.0
  ● fredcy/elm-parseint 2.0.1
  ● elm/core 1.0.5
  ● elm/virtual-dom 1.0.3
  ● elm-community/array-extra 2.6.0
  ● obiloud/numeric-decimal 3.0.1
  ● elm-community/basics-extra 4.1.0
  ● guida-lang/glsl 1.0.0
  ● guida-lang/graph 1.0.0
  ● elm-community/maybe-extra 5.3.0
  ● elm-community/list-extra 8.7.0
  ● elm-explorations/test 2.2.0

Dependencies ready!           
Success! Compiled 141 modules.

    Terminal.Main ───> bin/guida.js

elm make --optimize --output=bin/guida.js src/Terminal/Main.elm  1.33s user 0.43s system 30% cpu 5.829 total

Closing this issue for now, as I think this is a good performance for now.