diff --git a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java index 9ebc82358..d37d6e8e0 100755 --- a/src/de/dhbwstuttgart/syntaxtree/SourceFile.java +++ b/src/de/dhbwstuttgart/syntaxtree/SourceFile.java @@ -356,8 +356,13 @@ public class SourceFile */ typinferenzLog.debug("\nUnifiziere Constraints:\n"+constraints, Section.TYPEINFERENCE); typinferenzLog.debug("\nFC:\n"+finiteClosure, Section.TYPEINFERENCE); + long start = System.currentTimeMillis(); Set> unifyResult = new TypeUnify().unify(constraints, finiteClosure); + long time = System.currentTimeMillis()-start; typinferenzLog.debug("\nErgebnis der Unifizierung:\n"+unifyResult, Section.TYPEINFERENCE); + typinferenzLog.debug("\nAnzahl Lösungen:\n"+unifyResult.size(), Section.TYPEINFERENCE); + typinferenzLog.debug("\nZeit für Unifizierung: "+time + "ms", Section.TYPEINFERENCE); + Menge> convertedResult = unifyResult.parallelStream().>map((Set resultSet)->{ Menge innerConvert = resultSet.stream().map((UnifyPair mp)->UnifyTypeFactory.convert(mp)) diff --git a/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java b/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java index 31c5cd375..3f937fb78 100644 --- a/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java +++ b/src/de/dhbwstuttgart/syntaxtree/factory/UnifyTypeFactory.java @@ -194,7 +194,7 @@ public class UnifyTypeFactory { public static Type convert(PlaceholderType t) { TypePlaceholder ret = TypePlaceholder.getInstance(t.getName()); if(ret == null){ //Dieser TPH wurde vom Unifikationsalgorithmus erstellt - ret = TypePlaceholder.fresh(t.getName(), NULL_NODE); + ret = TypePlaceholder.fresh(NULL_NODE); } return ret; } diff --git a/src/de/dhbwstuttgart/typeinference/unify/TypeUnify.java b/src/de/dhbwstuttgart/typeinference/unify/TypeUnify.java index 2e0d70fd1..031576d95 100644 --- a/src/de/dhbwstuttgart/typeinference/unify/TypeUnify.java +++ b/src/de/dhbwstuttgart/typeinference/unify/TypeUnify.java @@ -49,7 +49,9 @@ public class TypeUnify { */ protected IRuleSet rules = new RuleSet(); - protected boolean parallel = true; + // Scheint momentan eher zu verlangsamen, vermutlich zu viele threads, + // threadpool und task-queue einbauen und minimale problemgröße für neuen thread + protected boolean parallel = false; /** * Computes all principal type unifiers for a set of constraints.