Comments (2)
For a very large code base I don't believe in memory indexes are going to hold up. I did some testing today on tens of thousands of semanticdbs and found that scaling per 10k semanticdb documents was roughly:
To load semanticdbs that have been previously calculated:
1 minute to load
1.5GB RAM to load
1GB RAM used after garbage collection with jvm string deduplication enabled
4s added to garbage collection time per 10k semantic documents indexed
Without having at least a 1.5x more heap available than will be eventually needed load time went through the roof, on one test after half an hour I just gave up. Adding more heap (over 10GB) got it down below 10 minutes again.
For small to medium size projects the in memory solution may work out just fine but for very large code bases it is not going to work.
from metals.
Fixed in #332. Numbers from my machine are listed here https://github.com/scalameta/metals/blob/master/metals-bench/readme.md
At least the build has benchmarking infrastructure and new features will be benchmarked before getting merged to ensure that performance is good even for large code bases.
from metals.
Related Issues (20)
- Issues when switching Bloop to Mill build server
- BSP tracing in a quantum state HOT 2
- no build target found and Could not load snapshot text for for a particular file HOT 5
- Ticket Project
- Find references doesn't detect destructuring HOT 1
- java.lang.NoSuchMethodError: 'void bloop.config.Config$Scala.<init> HOT 6
- `imports-for-non-compiling` outline test not working for Scala 3's best effort
- [VS Code] Test output is displayed in Debug Console instead of Test Results
- Pc fails for `.scala` with shebang
- Error with metals.defaultBspToBuildTool for Maven and Gradle started happening again (as in #6381)
- Error after executing "Clean and restart build server"
- Scala 3: Completions, HOFs and aliased tuple types HOT 2
- If a test label is two strings concatenated with `+`, the test is ignored HOT 1
- Disambiguate workspace completions for `val`s in Scala 3
- Completions offered in invalid position in Scala 3
- Metals tries and fails to tokenise too many times
- Compilation in Scala 3.5.0-RC5 gives possibly false errors HOT 7
- Best effort compilation gives false errors HOT 6
- Using textDocument/codeAction to get code actions seems to produce extra error messages about organizing imports HOT 2
- Autocomplete misses some classes HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from metals.