Changeset 398
- Timestamp:
- 08/10/10 18:15:27 (1 year ago)
- Files:
-
- kahina/trunk/src/org/kahina/lp/profiler/LogicProgrammingProfile.java (moved) (moved from kahina/trunk/src/org/kahina/core/profiler/Profile.java) (1 diff)
- kahina/trunk/src/org/kahina/lp/profiler/LogicProgrammingProfiler.java (modified) (3 diffs)
- kahina/trunk/src/org/kahina/lp/profiler/TraleSLDProfiler.java (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
kahina/trunk/src/org/kahina/lp/profiler/LogicProgrammingProfile.java
r396 r398 1 package org.kahina. core.profiler;1 package org.kahina.lp.profiler; 2 2 3 public class Profile 3 import java.util.HashMap; 4 import java.util.Map; 5 6 import org.kahina.core.profiler.ProfileEntry; 7 8 public class LogicProgrammingProfile 4 9 { 10 private final Map<ProfileEntry, Integer> callsByEntry = new HashMap<ProfileEntry, Integer>(); 11 12 private final Map<ProfileEntry, Integer> failsByEntry = new HashMap<ProfileEntry, Integer>(); 13 14 private final Map<ProfileEntry, Integer> exitsByEntry = new HashMap<ProfileEntry, Integer>(); 15 16 private final Map<ProfileEntry, Integer> redosByEntry = new HashMap<ProfileEntry, Integer>(); 17 18 public void call(ProfileEntry entry) 19 { 20 count(entry, callsByEntry); 21 } 22 23 public void redo(ProfileEntry entry) 24 { 25 count(entry, redosByEntry); 26 } 27 28 private void count(ProfileEntry entry, Map<ProfileEntry, Integer> map) 29 { 30 if (!map.containsKey(entry)) 31 { 32 map.put(entry, 1); 33 } else 34 { 35 map.put(entry, map.get(entry) + 1); 36 } 37 } 38 39 public void fail(ProfileEntry entry) 40 { 41 count(entry, failsByEntry); 42 } 43 44 public void exit(ProfileEntry entry) 45 { 46 count(entry, exitsByEntry); 47 } 5 48 } kahina/trunk/src/org/kahina/lp/profiler/LogicProgrammingProfiler.java
r396 r398 1 1 package org.kahina.lp.profiler; 2 2 3 import org.kahina.core.KahinaRunner; 3 4 import org.kahina.core.control.KahinaListener; 4 5 import org.kahina.core.event.KahinaEvent; 5 6 import org.kahina.core.profiler.ProfileEntry; 6 7 import org.kahina.core.util.Mapper; 8 import org.kahina.lp.LogicProgrammingStep; 7 9 import org.kahina.lp.event.LogicProgrammingBridgeEvent; 10 import org.kahina.lp.event.LogicProgrammingBridgeEventType; 8 11 9 12 public class LogicProgrammingProfiler implements KahinaListener … … 12 15 private final Mapper<String, ProfileEntry> mapper; 13 16 17 private final LogicProgrammingProfile profile = new LogicProgrammingProfile(); 18 14 19 public LogicProgrammingProfiler(Mapper<String, ProfileEntry> mapper) 15 20 { 16 21 this.mapper = mapper; 22 KahinaRunner.getControl().registerListener("logic programming bridge", this); 17 23 } 18 24 … … 28 34 private void processLogicProgrammingBridgeEvent(LogicProgrammingBridgeEvent event) 29 35 { 30 // TODO Funny, there is no CALL event type yet. Need to change that first. 36 int eventType = event.getEventType(); 37 if (eventType == LogicProgrammingBridgeEventType.STEP_CALL) 38 { 39 call(event.getID()); 40 } else if (eventType == LogicProgrammingBridgeEventType.STEP_FAIL) 41 { 42 fail(event.getID()); 43 } else if (eventType == LogicProgrammingBridgeEventType.STEP_DET_EXIT) 44 { 45 exit(event.getID()); 46 } else if (eventType == LogicProgrammingBridgeEventType.STEP_NONDET_EXIT) 47 { 48 exit(event.getID()); 49 } else if (eventType == LogicProgrammingBridgeEventType.STEP_REDO) 50 { 51 redo(event.getID()); 52 } 53 } 54 55 protected void call(int id) 56 { 57 profile.call(getProfileEntryForStepID(id)); 58 } 59 60 protected void fail(int id) 61 { 62 profile.fail(getProfileEntryForStepID(id)); 63 } 64 65 protected void exit(int id) 66 { 67 profile.exit(getProfileEntryForStepID(id)); 68 } 69 70 protected void redo(int id) 71 { 72 profile.redo(getProfileEntryForStepID(id)); 73 } 74 75 protected ProfileEntry getProfileEntryForStepID(int stepID) 76 { 77 return mapper.map(KahinaRunner.retrieve(LogicProgrammingStep.class, stepID).getGoalDesc()); 78 } 79 80 public LogicProgrammingProfile getProfile() 81 { 82 return profile; 31 83 } 32 84
