@@ -42,6 +42,7 @@ type IndexerDataMap = {
42
42
} ;
43
43
44
44
class IndexManager {
45
+ private static readonly INDEXING_BATCH_SIZE = 50 ;
45
46
private static readonly REPORTING_BATCH_SIZE = 500 ;
46
47
47
48
protected indexers : IndexerInstance [ ] = [ ] ;
@@ -75,100 +76,107 @@ class IndexManager {
75
76
) : Promise < void > {
76
77
const workspaceUri = workspaceFolder . uri ;
77
78
78
- Logger . logWithTime ( 'Indexing workspace' , workspaceFolder . name ) ;
79
-
80
79
for ( const indexer of this . indexers ) {
81
80
if ( ! force ) {
82
- Logger . logWithTime ( 'Loading index from storage' , workspaceFolder . name , indexer . getId ( ) ) ;
81
+ Logger . log ( 'INDEXER' , 'Loading index from storage' , workspaceFolder . name , indexer . getId ( ) ) ;
83
82
this . indexStorage . loadIndex ( workspaceFolder , indexer . getId ( ) , indexer . getVersion ( ) ) ;
84
83
85
84
if ( ! this . shouldIndex ( workspaceFolder , indexer ) ) {
86
- Logger . logWithTime ( 'Loaded index from storage' , workspaceFolder . name , indexer . getId ( ) ) ;
85
+ Logger . log ( 'INDEXER' , 'Loaded index from storage' , workspaceFolder . name , indexer . getId ( ) ) ;
87
86
continue ;
88
87
}
89
88
}
90
- Logger . logWithTime ( 'Indexing' , indexer . getName ( ) ) ;
89
+
90
+ const startIndexing = Date . now ( ) ;
91
+ Logger . log ( 'INDEXER' , 'Indexing' , indexer . getName ( ) ) ;
91
92
92
93
progress . report ( {
93
94
message : `Indexing - ${ indexer . getName ( ) } [...]` ,
94
95
} ) ;
95
96
96
97
const indexData = new Map ( ) ;
97
98
98
- Logger . logWithTime ( 'Discovering files to index' ) ;
99
+ const startDiscover = Date . now ( ) ;
100
+ Logger . log ( 'INDEXER' , 'Discovering files to index' ) ;
99
101
100
102
const files = await workspace . findFiles (
101
103
indexer . getPattern ( workspaceUri ) ,
102
104
indexer . getExcludePattern ( workspaceUri )
103
105
) ;
104
106
107
+ const discoverDuration = Date . now ( ) - startDiscover ;
108
+ Logger . log ( 'INDEXER' , 'Found' , files . length , 'files to index in' , discoverDuration , 'ms' ) ;
109
+
105
110
let doneCount = 0 ;
106
111
const totalCount = files . length ;
107
- Logger . logWithTime ( 'Found' , totalCount , 'files to index' ) ;
108
112
109
- const batchSize = Config . get < number > ( 'magento-toolbox.indexingBatchSize' , 25 ) ;
113
+ const startIndex = Date . now ( ) ;
114
+
115
+ for ( let i = 0 ; i < files . length ; i += IndexManager . INDEXING_BATCH_SIZE ) {
116
+ const batch = files . slice ( i , i + IndexManager . INDEXING_BATCH_SIZE ) ;
110
117
111
- for ( let i = 0 ; i < files . length ; i += batchSize ) {
112
- const batch = files . slice ( i , i + batchSize ) ;
118
+ const promises = batch . map ( async file => {
119
+ try {
120
+ const data = await indexer . indexFile ( file ) ;
113
121
114
- await Promise . all (
115
- batch . map ( async file => {
116
- try {
117
- const data = await indexer . indexFile ( file ) ;
122
+ if ( data !== undefined ) {
123
+ indexData . set ( file . fsPath , data ) ;
124
+ }
125
+ } catch ( error ) {
126
+ Logger . error ( 'Error indexing file' , file . fsPath , String ( error ) ) ;
127
+ }
128
+ } ) ;
118
129
119
- if ( data !== undefined ) {
120
- indexData . set ( file . fsPath , data ) ;
121
- }
130
+ await Promise . all ( promises ) ;
122
131
123
- doneCount ++ ;
132
+ doneCount += batch . length ;
124
133
125
- if ( doneCount % IndexManager . REPORTING_BATCH_SIZE === 0 ) {
126
- Logger . logWithTime ( 'Indexed' , doneCount , 'files of' , totalCount ) ;
134
+ if ( doneCount % IndexManager . REPORTING_BATCH_SIZE === 0 ) {
135
+ Logger . log ( 'Indexed' , doneCount , 'files of' , totalCount ) ;
127
136
128
- progress . report ( {
129
- message : `Indexing - ${ indexer . getName ( ) } [${ doneCount } /${ totalCount } ]` ,
130
- } ) ;
131
- }
132
- } catch ( error ) {
133
- Logger . error ( 'Error indexing file' , file . fsPath , String ( error ) ) ;
134
- }
135
- } )
136
- ) ;
137
+ progress . report ( {
138
+ message : `Indexing - ${ indexer . getName ( ) } [${ doneCount } /${ totalCount } ]` ,
139
+ } ) ;
140
+ }
137
141
}
138
142
143
+ const indexDuration = Date . now ( ) - startIndex ;
144
+ Logger . log ( 'INDEXER' , `Indexed ${ doneCount } files of ${ totalCount } in ${ indexDuration } ms` ) ;
145
+
139
146
this . indexStorage . set ( workspaceFolder , indexer . getId ( ) , indexData ) ;
140
147
this . indexStorage . saveIndex ( workspaceFolder , indexer . getId ( ) , indexer . getVersion ( ) ) ;
141
148
142
149
clear ( [ indexer . getId ( ) ] ) ;
143
150
144
- Logger . logWithTime ( 'Indexing' , indexer . getName ( ) , 'done' ) ;
151
+ const indexingDuration = Date . now ( ) - startIndexing ;
152
+ Logger . log ( 'INDEXER' , 'Indexing' , indexer . getName ( ) , 'done in' , indexingDuration , 'ms' ) ;
145
153
146
154
progress . report ( { message : `Indexing - ${ indexer . getName ( ) } [done]` } ) ;
147
155
}
148
156
149
- Logger . logWithTime ( 'Finished indexing workspace' , workspaceFolder . name ) ;
157
+ Logger . log ( 'INDEXER' , 'Finished indexing workspace' , workspaceFolder . name ) ;
150
158
}
151
159
152
160
public async indexFile ( workspaceFolder : WorkspaceFolder , file : Uri ) : Promise < void > {
153
- Logger . logWithTime ( 'Indexing file' , file . fsPath ) ;
161
+ Logger . log ( 'INDEXER' , 'Indexing file' , file . fsPath ) ;
154
162
155
163
await Promise . all (
156
164
this . indexers . map ( async indexer => {
157
165
await this . indexFileInner ( workspaceFolder , file , indexer ) ;
158
166
} )
159
167
) ;
160
168
161
- Logger . logWithTime ( 'Finished indexing file' , file . fsPath ) ;
169
+ Logger . log ( 'INDEXER' , 'Finished indexing file' , file . fsPath ) ;
162
170
}
163
171
164
172
public async indexFiles ( workspaceFolder : WorkspaceFolder , files : Uri [ ] ) : Promise < void > {
165
- Logger . logWithTime ( `Indexing ${ files . length } files` ) ;
173
+ Logger . log ( 'INDEXER' , `Indexing ${ files . length } files` ) ;
166
174
167
175
for ( const indexer of this . indexers ) {
168
176
await Promise . all ( files . map ( file => this . indexFileInner ( workspaceFolder , file , indexer ) ) ) ;
169
177
}
170
178
171
- Logger . logWithTime ( `Finished indexing ${ files . length } files` ) ;
179
+ Logger . log ( 'INDEXER' , `Finished indexing ${ files . length } files` ) ;
172
180
}
173
181
174
182
public getIndexStorageData < T = any > (
0 commit comments