/[projects]/dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupMain.java
ViewVC logotype

Diff of /dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/LookupMain.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2243 by torben, Wed Dec 10 09:58:28 2014 UTC revision 2422 by torben, Tue Mar 3 08:14:09 2015 UTC
# Line 2  package dk.daoas.fulddaekning; Line 2  package dk.daoas.fulddaekning;
2    
3  import java.io.File;  import java.io.File;
4  import java.io.FileReader;  import java.io.FileReader;
5  import java.util.List;  import java.util.Set;
6    import java.util.concurrent.Executors;
7    import java.util.concurrent.ThreadFactory;
8    import java.util.concurrent.ThreadPoolExecutor;
9  import java.util.logging.FileHandler;  import java.util.logging.FileHandler;
10  import java.util.logging.Logger;  import java.util.logging.Logger;
11  import java.util.logging.SimpleFormatter;  import java.util.logging.SimpleFormatter;
# Line 28  public class LookupMain { Line 31  public class LookupMain {
31          static Statistik mestBrugteTid = new Statistik();          static Statistik mestBrugteTid = new Statistik();
32          static Statistik stoersteDataset = new Statistik();          static Statistik stoersteDataset = new Statistik();
33                    
34          static Adresse[] alleDaekkedeAdresser;          private static Adresse[] alleDaekkedeAdresser;
35    
36            static ThreadPoolExecutor threadPool;
37    
38            private static void setupThreadPool() {
39                    threadPool = (ThreadPoolExecutor) Executors.newFixedThreadPool(max_workers, new WorkerThreadFactory() );
40            }
41                    
42                    
43          public static void main(String[] args) throws Exception {          public static void main(String[] args) throws Exception {
# Line 55  public class LookupMain { Line 64  public class LookupMain {
64                  if (max_workers <= 0) {                  if (max_workers <= 0) {
65                          logger.info("!!! AUTO-DETECT MAX_WORKERS !!!");                          logger.info("!!! AUTO-DETECT MAX_WORKERS !!!");
66                          int cores = Runtime.getRuntime().availableProcessors();                          int cores = Runtime.getRuntime().availableProcessors();
67                            cores -= 1;//Efterlad 1 core/cpu i reserve til systemet
68                                                    
69                          max_workers = cores - 1; //Efterlad 1 core/cpu i reserve til systemet                          max_workers = Math.max(1, cores); //Dog skal der som minimum være 1 core til beregning
70                                                    
71                  }                  }
72                  logger.info("Starting with MAX_WORKERS:" + max_workers);                  logger.info("Starting with MAX_WORKERS:" + max_workers);
73                    setupThreadPool();
74                                    
75                                    
76                  verbose = Boolean.parseBoolean( conf.getSafeProperty("VERBOSE") );                  verbose = Boolean.parseBoolean( conf.getSafeProperty("VERBOSE") );
# Line 76  public class LookupMain { Line 87  public class LookupMain {
87                  Constants consts = Constants.getInstance();                  Constants consts = Constants.getInstance();
88                                    
89                  Database db = new Database(conf);                  Database db = new Database(conf);
90                                    db.hentAlleIkkedaekkedeAdresser(consts.getMinPostnr(), consts.getMaxPostnr() );
                   
91    
92                                    
93                  boolean testRun= false;                  boolean testRun= false;
# Line 88  public class LookupMain { Line 98  public class LookupMain {
98                  if (testRun == false) {                  if (testRun == false) {
99                                    
100                          logger.info("Finder postnumre");                          logger.info("Finder postnumre");
101                          List<String> postnumre = db.hentPostnumre();                          Set<Integer> postnumre = db.hentPostnumreCache();
102                                                    
103                          // Først validerer vi BBox på alle postnummre, for at undgå fuldt stop midt i beregningen                          // Først validerer vi BBox på alle postnummre, for at undgå fuldt stop midt i beregningen
104                          for(String postnr : postnumre) { //                          for(int postnr : postnumre) { //
105                                  logger.info("Validerer BBox for " + postnr);                                  logger.info("Validerer BBox for " + postnr);
106                                  BoundingBox bbox = db.getBoundingbox(postnr);                                  BoundingBox bbox = db.getBoundingbox(postnr);
107                                  bbox.validateBbox();                                  bbox.validateBbox();
108                          }                          }
109                                                    
110                          if (consts.doExtendedLookup()) {  
111                                  logger.info("Henter alle daekkede adresser");                          logger.info("Henter alle daekkede adresser");
112                                  alleDaekkedeAdresser = db.hentAlleDaekkedeAdresser();                          alleDaekkedeAdresser = db.hentAlleDaekkedeAdresser();
113                                  logger.info( "AlleDaekkedeAdresser.length=" + alleDaekkedeAdresser.length);                          logger.info( "AlleDaekkedeAdresser.length=" + alleDaekkedeAdresser.length);                    
                         }  
                           
114                                                    
115                          //pre-check er ok - reset tmp tabel og start søgningen                          //pre-check er ok - reset tmp tabel og start søgningen
116                          db.resetResultTable();                          db.resetResultTable();
117                                                    
118                          for(String postnr : postnumre) {                          for(int postnr : postnumre) {
119                                  Lookup lookup = new Lookup(postnr, db);                                  Lookup lookup = new Lookup(postnr, db, threadPool);
120                                  lookup.doLookup();                                                        lookup.doLookup();                      
121                          }                          }
122                                                    
# Line 124  public class LookupMain { Line 132  public class LookupMain {
132                          /// Test                          /// Test
133                          db.resetResultTable();                          db.resetResultTable();
134                                                    
135                          if (consts.doExtendedLookup()) {  
136                                  alleDaekkedeAdresser = db.hentAlleDaekkedeAdresser();                          alleDaekkedeAdresser = db.hentAlleDaekkedeAdresser();
137                                  logger.info( "AlleDaekkedeAdresser.length=" + alleDaekkedeAdresser.length);                          logger.info( "AlleDaekkedeAdresser.length=" + alleDaekkedeAdresser.length);
138                          }  
139                                                    
140                          Lookup lookup = new Lookup("458x", db);                          Lookup lookup = new Lookup(2700, db, threadPool);
141                          lookup.doLookup();                                                                                        lookup.doLookup();                                                              
142                  }                  }
143    
144                    threadPool.shutdown();
145                                    
146                  long now = System.currentTimeMillis();                  long now = System.currentTimeMillis();
147                  long elapsed = now - start ;                  long elapsed = now - start ;
# Line 168  public class LookupMain { Line 178  public class LookupMain {
178                  int hours   = (int) ((milliseconds / (1000*60*60)) % 24);                  int hours   = (int) ((milliseconds / (1000*60*60)) % 24);
179                                    
180                  return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, mseconds);                  return String.format("%02d:%02d:%02d.%03d", hours, minutes, seconds, mseconds);
181          }                }
182            
183            static class WorkerThreadFactory implements ThreadFactory {
184                    int count = 0;
185    
186                    @Override
187                    public Thread newThread(Runnable r) {
188                            return new Thread(r, "lookupWorker/" + count++);
189                    }      
190            }
191  }  }

Legend:
Removed from v.2243  
changed lines
  Added in v.2422

  ViewVC Help
Powered by ViewVC 1.1.20