fix(ngcc): do not use cached file-system (#36687)
The cached file-system was implemented to speed up ngcc processing, but in reality most files are not accessed many times and there is no noticeable degradation in speed by removing it. Benchmarking `ngcc -l debug` for AIO on a local machine gave a range of 196-236 seconds with the cache and 197-224 seconds without the cache. Moreover, when running in parallel mode, ngcc has a separate file cache for each process. This results in excess memory usage. Notably the master process, which only does analysis of entry-points holds on to up to 500Mb for AIO when using the cache compared to only around 30Mb when not using the cache. Finally, the file-system cache being incorrectly primed with file contents before being processed has been the cause of a number of bugs. For example https://github.com/angular/angular-cli/issues/16860#issuecomment-614694269. PR Close #36687
This commit is contained in:

committed by
Matias Niemelä

parent
37bfb14956
commit
0c2ed4c3e5
@ -8,7 +8,7 @@
|
||||
*/
|
||||
import * as yargs from 'yargs';
|
||||
|
||||
import {resolve, setFileSystem, CachedFileSystem, NodeJSFileSystem} from '../../src/ngtsc/file_system';
|
||||
import {resolve, setFileSystem, NodeJSFileSystem} from '../../src/ngtsc/file_system';
|
||||
import {ConsoleLogger} from './logging/console_logger';
|
||||
import {LogLevel} from './logging/logger';
|
||||
import {NgccOptions} from './ngcc_options';
|
||||
@ -105,7 +105,7 @@ export function parseCommandLineOptions(args: string[]): NgccOptions {
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
setFileSystem(new CachedFileSystem(new NodeJSFileSystem()));
|
||||
setFileSystem(new NodeJSFileSystem());
|
||||
|
||||
const baseSourcePath = resolve(options['s'] || './node_modules');
|
||||
const propertiesToConsider: string[] = options['p'];
|
||||
|
Reference in New Issue
Block a user