3 ms·
OCaml is really good at building in parallel. So even without that many files it can still compile using 32 threads. Making so that a project with 20k loc is l
by EduardoRFS 5y ago
OCaml is really good at building in parallel. So even without that many files it can still compile using 32 threads.
Making so that a project with 20k loc is less than a second in debug mode. And recompile time in native(debug) mode is almost 100% linking time.
For bytecode you can have wild rebuild times, in the milisecond range.
- fnord123 5y agoPyre[1] is about 20k loc of ocaml[2]. $ time make -C source -j8 make: Entering directory '/home/fnord123/src/download/pyre-check/source' ../scripts/setup.sh --configure Build info: Linux x86_64 @ Mon Aug 23 2021 (development build) abort: no repository found in '/home/fnord123/src/download/pyre-check/source' (.hg not found)! Git commit: 1e4dd5a39db1631fd13a3a8df74d6e0f5d801fbc dune build @install -j auto --profile dev menhir parser/generator.{ml,mli} Warning: 31 states have shift/reduce conflicts. Warning: 5 states have reduce/reduce conflicts. Warning: 77 shift/reduce conflicts were arbitrarily resolved. Warning: 75 reduce/reduce conflicts were arbitrarily resolved. make: Leaving directory '/home/fnord123/src/download/pyre-check/source' real 0m43.700s user 4m3.030s sys 0m41.005s I must be doing something wrong. [1] https://github.com/facebook/pyre-check https://github.com/facebook/pyre-check [2] $ tokei ------------------------------------------------------------------------------- Language Files Lines Code Comments Blanks ------------------------------------------------------------------------------- Autoconf 2 235 204 3 28 C 15 242641 165361 60669 16611 C Header 10 14267 2617 11094 556 Coq 10 2391 1968 220 203 CSS 5 713 540 44 129 Dockerfile 2 71 42 11 18 HTML 2 35 30 0 5 INI 1 12 9 0 3 Java 31 2654 2080 267 307 JavaScript 7 867 752 61 54 JSON 17 939 939 0 0 Makefile 5 229 145 45 39 Markdown 47 7213 7213 0 0 OCaml 791 229096 198302 10455 20339 Python 398 61909 50119 2917 8873 Shell 5 111 59 34 18 SVG 2 2 2 0 0 TeX 4 929 642 129 158 Plain Text 5 457 457 0 0 TOML 1 2 2 0 0 TypeScript 2 130 84 20 26 ------------------------------------------------------------------------------- Total 1362 564903 431567 85969 47367 -------------------------------------------------------------------------------
- Jtsummers 5y ago> Pyre[1] is about 20k loc of ocaml[2]. Reading your table, there are 198302 lines of OCaml code. That's about 10x larger than the 20k you claim. The 20339 in that row is the count of blank lines. I doubt they matter much here.
- fnord123 5y agoArgh I misread the number of digits.
- dwohnitmok 5y agoI'd be curious if the pyre-check compilation is any faster for you either by removing the inlining optimization flag (the `-Oclassic` here https://github.com/facebook/pyre-check/blame/36243764ab81a828a92fee4499d73afef8cae1f0/source/dune.in#L10 https://github.com/facebook/pyre-check/blame/36243764ab81a82...) or whether there's a way to compile pyre-check to bytecode instead of the native compilation step (which unfortunately it looks like there's no easy way to modify pyre-check's build config to do so).