File tree Expand file tree Collapse file tree 4 files changed +32
-5
lines changed Expand file tree Collapse file tree 4 files changed +32
-5
lines changed Original file line number Diff line number Diff line change @@ -241,8 +241,15 @@ const ALString KWDatabaseMemoryGuard::GetSingleInstanceVeryLargeLabel()
241
241
242
242
// Et dans le cas ou la memoire a du etre nettoyee
243
243
if (GetMemoryCleaningNumber () > 0 )
244
+ {
244
245
sLabel += " : all derived variables have been computed using RAM sparingly at the expense of "
245
- " computation time" ;
246
+ " computation time (" ;
247
+ sLabel += IntToString (GetMemoryCleaningNumber ());
248
+ if (GetMemoryCleaningNumber () == 1 )
249
+ sLabel += " additional pass)" ;
250
+ else
251
+ sLabel += " additional passes)" ;
252
+ }
246
253
ensure (sLabel .Find (sMemoryGuardLabelPrefix ) == 0 );
247
254
return sLabel ;
248
255
}
Original file line number Diff line number Diff line change @@ -215,6 +215,9 @@ class KWDatabaseMemoryGuard : public Object
215
215
static const int GetDefautMinSecondaryRecordNumberFactor ();
216
216
static const int GetDefautMaxSecondaryRecordNumberFactor ();
217
217
218
+ // Nombre max de passes de nettoyage de la memoire utilisees pour continuer le calcul des attributs
219
+ static const int GetMaxMemoryCleaningNumber ();
220
+
218
221
// ////////////////////////////////////////////////////////////////////////////////////
219
222
// /// Implementation
220
223
protected:
@@ -306,6 +309,9 @@ class KWDatabaseMemoryGuard : public Object
306
309
static const int nDefautMinSecondaryRecordNumberFactor = 100 ;
307
310
static const int nDefautMaxSecondaryRecordNumberFactor = 10000 ;
308
311
312
+ // Nombre max de passes de nettoyage de la memoire utilisees pour continuer le calcul des attributs
313
+ static const int nMaxMemoryCleaningNumber = 100 ;
314
+
309
315
// /////////////////////////////////////////////////////////////////////////////////////////
310
316
// Gestion de la methode specifique pour ignorer le controle de flow des erreurs
311
317
@@ -363,3 +369,8 @@ inline const int KWDatabaseMemoryGuard::GetDefautMaxSecondaryRecordNumberFactor(
363
369
{
364
370
return nDefautMaxSecondaryRecordNumberFactor;
365
371
}
372
+
373
+ inline const int KWDatabaseMemoryGuard::GetMaxMemoryCleaningNumber ()
374
+ {
375
+ return nMaxMemoryCleaningNumber;
376
+ }
Original file line number Diff line number Diff line change @@ -183,11 +183,16 @@ void KWObject::ComputeAllValues(KWDatabaseMemoryGuard* memoryGuard)
183
183
// exploitant ces instances creees sont faux et fluctuants selon la memoire disponible
184
184
if (not memoryGuard->IsSingleInstanceMemoryLimitReachedDuringCreation ())
185
185
{
186
- // Nettoyage des donnees de travail temporaire, pouvant etre recalculees
187
- CleanTemporayDataItemsToComputeAndClean ();
186
+ // On ne le fait pas s'il y a eu trop de passe de nettoyage, pour eviter
187
+ // de passer un temps potentiellement enorme
188
+ if (memoryGuard->GetMemoryCleaningNumber () < memoryGuard->GetMaxMemoryCleaningNumber ())
189
+ {
190
+ // Nettoyage des donnees de travail temporaire, pouvant etre recalculees
191
+ CleanTemporayDataItemsToComputeAndClean ();
188
192
189
- // Actualisation de la detetcion de depassement memoire
190
- memoryGuard->UpdateAfterMemoryCleaning ();
193
+ // Actualisation de la detection de depassement memoire
194
+ memoryGuard->UpdateAfterMemoryCleaning ();
195
+ }
191
196
}
192
197
}
193
198
}
Original file line number Diff line number Diff line change @@ -66,6 +66,10 @@ void KWBenchmarkClassSpec::ReadClasses()
66
66
temporaryClassDomain->ReadFile (GetClassFileName ());
67
67
}
68
68
}
69
+
70
+ // Compilation
71
+ if (temporaryClassDomain->Check ())
72
+ temporaryClassDomain->Compile ();
69
73
Global::SetSilentMode (false );
70
74
sLastReadClassFileName = GetClassFileName ();
71
75
}
You can’t perform that action at this time.
0 commit comments