src/de/pik/lagom/generic/StepManagerWithProfiler.java

00001 
00002 // Copyright 2010 by Carlo Jaeger, Antoine Mandel, Steffen Fuerst and European Climate Forum
00003 // Licensed under the Open Software License version 3.0
00004 // See the file "License-OSL-3.0.txt" in the distribution for more information
00005 // The License text can be also found under http://www.opensource.org/licenses/osl-3.0.php
00007 
00008 package de.pik.lagom.generic;
00009 
00010 import java.lang.reflect.Field;
00011 
00012 import de.pik.lagom.annotations.WriteToFile;
00013 import de.pik.lagom.toolbox.ProbeBase;
00014 import de.pik.lagom.toolbox.StepManager;
00015 
00016 // The StepManager can calculate the time that was used for executing the steps. This
00017 // class contains mainly a probe that allow to create a display that is showing
00018 // the results. It doesn't contain any model-relevant implementations and can be ignored
00019 // in regards of the model itself.
00020 public class StepManagerWithProfiler extends StepManager {
00021   public class Probe extends ProbeBase {
00022     @Override
00023     public String toString() {
00024       return "Profiler";
00025     }
00026 
00027     @WriteToFile
00028     public double getPreparatoryStepTimeTotal() {
00029       return preparatoryStepTimeTotal;
00030     }
00031 
00032     @WriteToFile
00033     public double getExchangeStepTimeTotal() {
00034       return exchangeStepTimeTotal;
00035     }
00036 
00037     @WriteToFile
00038     public double gethouseholdsAdjustEmploymentTimeTotal() {
00039       return householdsAdjustEmploymentTimeTotal;
00040     }
00041 
00042     @WriteToFile
00043     public double getFirmsAdjustWorkforceTimeTotal() {
00044       return firmsAdjustWorkforceTimeTotal;
00045     }
00046 
00047     @WriteToFile
00048     public double getProductionTimeTotal() {
00049       return productionTimeTotal;
00050     }
00051 
00052     @WriteToFile
00053     public double getConsumptionTimeTotal() {
00054       return consumptionTimeTotal;
00055     }
00056 
00057     @WriteToFile
00058     public double getFirmAccountingTimeTotal() {
00059       return firmAccountingTimeTotal;
00060     }
00061 
00062     @WriteToFile
00063     public double gethouseholdsAccountingTimeTotal() {
00064       return householdsAccountingTimeTotal;
00065     }
00066 
00067     @WriteToFile
00068     public double getImportExportAccountingTimeTotal() {
00069       return importExportAccountingTimeTotal;
00070     }
00071 
00072     @WriteToFile
00073     public double getFirmsBeliefUpdatingTimeTotal() {
00074       return firmsBeliefUpdatingTimeTotal;
00075     }
00076 
00077     @WriteToFile
00078     public double getUpdateLaborProductivityTimeTotal() {
00079       return updateLaborProductivityTimeTotal;
00080     }
00081 
00082     @WriteToFile
00083     public double getSettingInterestRateTimeTotal() {
00084       return settingInterestRateTimeTotal;
00085     }
00086 
00087     @WriteToFile
00088     public double getFirmsCopyBehaviorTimeTotal() {
00089       return firmsCopyBehaviorTimeTotal;
00090     }
00091 
00092     @WriteToFile
00093     public double getFirmsEntryAndExitTimeTotal() {
00094       return firmsEntryAndExitTimeTotal;
00095     }
00096 
00097     @WriteToFile
00098     public double getFirmsMutationTimeTotal() {
00099       return firmsMutationTimeTotal;
00100     }
00101 
00102     @WriteToFile
00103     public double getPreparatoryStepTimePrePost() {
00104       return preparatoryStepTimePrePost;
00105     }
00106 
00107     @WriteToFile
00108     public double getExchangeStepTimePrePost() {
00109       return exchangeStepTimePrePost;
00110     }
00111 
00112     @WriteToFile
00113     public double gethouseholdsAdjustEmploymentTimePrePost() {
00114       return householdsAdjustEmploymentTimePrePost;
00115     }
00116 
00117     @WriteToFile
00118     public double getFirmsAdjustWorkforceTimePrePost() {
00119       return firmsAdjustWorkforceTimePrePost;
00120     }
00121 
00122     @WriteToFile
00123     public double getProductionTimePrePost() {
00124       return productionTimePrePost;
00125     }
00126 
00127     @WriteToFile
00128     public double getConsumptionTimePrePost() {
00129       return consumptionTimePrePost;
00130     }
00131 
00132     @WriteToFile
00133     public double getFirmAccountingTimePrePost() {
00134       return firmAccountingTimePrePost;
00135     }
00136 
00137     @WriteToFile
00138     public double gethouseholdsAccountingTimePrePost() {
00139       return householdsAccountingTimePrePost;
00140     }
00141 
00142     @WriteToFile
00143     public double getImportExportAccountingTimePrePost() {
00144       return importExportAccountingTimePrePost;
00145     }
00146 
00147     @WriteToFile
00148     public double getFirmsBeliefUpdatingTimePrePost() {
00149       return firmsBeliefUpdatingTimePrePost;
00150     }
00151 
00152     @WriteToFile
00153     public double getUpdateLaborProductivityTimePrePost() {
00154       return updateLaborProductivityTimePrePost;
00155     }
00156 
00157     @WriteToFile
00158     public double getSettingInterestRateTimePrePost() {
00159       return settingInterestRateTimePrePost;
00160     }
00161 
00162     @WriteToFile
00163     public double getFirmsCopyBehaviorTimePrePost() {
00164       return firmsCopyBehaviorTimePrePost;
00165     }
00166 
00167     @WriteToFile
00168     public double getFirmsEntryAndExitTimePrePost() {
00169       return firmsEntryAndExitTimePrePost;
00170     }
00171 
00172     @WriteToFile
00173     public double getFirmsMutationTimePrePost() {
00174       return firmsMutationTimePrePost;
00175     }
00176 
00177     @WriteToFile
00178     public double beginOfPeriodTime() {
00179       return beginOfPeriodTime;
00180     }
00181 
00182     @WriteToFile
00183     public double getEndOfPeriodTime() {
00184       return endOfPeriodTime;
00185     }
00186 
00187     @WriteToFile
00188     public double getSumTimeTotal() {
00189       return sumTimeTotal;
00190     }
00191 
00192     @WriteToFile
00193     public double getSumTimeThisPeriod() {
00194       return sumTimeThisPeriod;
00195     }
00196 
00197     @WriteToFile
00198     public double getGeneticEvolutionOfTechnologiesTimeTotal() {
00199       return geneticEvolutionOfTechnologiesTimeTotal;
00200     }
00201 
00202     @WriteToFile
00203     public double getGeneticEvolutionOfPricesTimeTotal() {
00204       return geneticEvolutionOfPricesTimeTotal;
00205     }
00206 
00207     @WriteToFile
00208     public double getGeneticEvolutionOfTechnologiesTimePrePost() {
00209       return geneticEvolutionOfTechnologiesTimePrePost;
00210     }
00211 
00212     @WriteToFile
00213     public double getGeneticEvolutionOfPricesTimePrePost() {
00214       return geneticEvolutionOfPricesTimePrePost;
00215     }
00216   }
00217 
00218   public StepManagerWithProfiler(String pPacketName) {
00219     super(pPacketName);
00220     profilerActive = true;
00221   }
00222 
00223   Probe probe = new StepManagerWithProfiler.Probe();
00224 
00225   // Attention: The current implementation set all fields to 0 in reset
00226   // todo: fix this hack, maybe using Annotations
00227   public double preparatoryStepTimeTotal;
00228   public double exchangeStepTimeTotal;
00229   public double householdsAdjustEmploymentTimeTotal;
00230   public double firmsAdjustWorkforceTimeTotal;
00231   public double productionTimeTotal;
00232   public double consumptionTimeTotal;
00233   public double firmAccountingTimeTotal;
00234   public double householdsAccountingTimeTotal;
00235   public double importExportAccountingTimeTotal;
00236   public double firmsBeliefUpdatingTimeTotal;
00237   public double updateLaborProductivityTimeTotal;
00238   public double settingInterestRateTimeTotal;
00239   public double firmsCopyBehaviorTimeTotal;
00240   public double firmsEntryAndExitTimeTotal;
00241   public double firmsMutationTimeTotal;
00242   public double geneticEvolutionOfTechnologiesTimeTotal;
00243   public double geneticEvolutionOfPricesTimeTotal;
00244 
00245   public double preparatoryStepTimePrePost;
00246   public double exchangeStepTimePrePost;
00247   public double householdsAdjustEmploymentTimePrePost;
00248   public double firmsAdjustWorkforceTimePrePost;
00249   public double productionTimePrePost;
00250   public double consumptionTimePrePost;
00251   public double firmAccountingTimePrePost;
00252   public double householdsAccountingTimePrePost;
00253   public double importExportAccountingTimePrePost;
00254   public double firmsBeliefUpdatingTimePrePost;
00255   public double updateLaborProductivityTimePrePost;
00256   public double settingInterestRateTimePrePost;
00257   public double firmsCopyBehaviorTimePrePost;
00258   public double firmsEntryAndExitTimePrePost;
00259   public double firmsMutationTimePrePost;
00260   public double geneticEvolutionOfTechnologiesTimePrePost;
00261   public double geneticEvolutionOfPricesTimePrePost;
00262 
00263   public double beginOfPeriodTime;
00264   public double endOfPeriodTime;
00265 
00266   public double sumTimeTotal = 0d;
00267   public double sumTimeThisPeriod = 0d;
00268 
00269   public StepManagerWithProfiler.Probe getProbe() {
00270     return probe;
00271   }
00272 
00273   public void addToSum(double pTime) {
00274     sumTimeTotal += pTime;
00275     sumTimeThisPeriod += pTime;
00276   }
00277 
00278   @Override
00279   public void reset() {
00280     super.reset();
00281     sumTimeTotal = 0d;
00282 
00283     final Field[] lFields = this.getClass().getFields();
00284     for (final Field field : lFields) {
00285       try {
00286         field.set(this, 0);
00287       } catch (final IllegalArgumentException e) {
00288         // todo Auto-generated catch block
00289         e.printStackTrace();
00290       } catch (final IllegalAccessException e) {
00291         // todo Auto-generated catch block
00292         e.printStackTrace();
00293       }
00294     }
00295   }
00296 
00297   @Override
00298   public void periodStart() {
00299     super.periodStart();
00300     sumTimeThisPeriod = 0d;
00301   }
00302 }
00303 
00305 // EOF
00307 

Generated on Tue Sep 14 11:11:49 2010 for lagom_generiC by  doxygen 1.5.4