diff --git a/calculatorpp-core/src/main/java/org/solovyev/android/calculator/ListCalculatorEventContainer.java b/calculatorpp-core/src/main/java/org/solovyev/android/calculator/ListCalculatorEventContainer.java index 4434e9a0..2af49a0e 100644 --- a/calculatorpp-core/src/main/java/org/solovyev/android/calculator/ListCalculatorEventContainer.java +++ b/calculatorpp-core/src/main/java/org/solovyev/android/calculator/ListCalculatorEventContainer.java @@ -43,14 +43,14 @@ public class ListCalculatorEventContainer implements CalculatorEventContainer { for (CalculatorEvent e : calculatorEvents) { for (CalculatorEventListener listener : listeners) { - long startTime = System.currentTimeMillis(); + /*long startTime = System.currentTimeMillis();*/ listener.onCalculatorEvent(e.getCalculatorEventData(), e.getCalculatorEventType(), e.getData()); - long endTime = System.currentTimeMillis(); +/* long endTime = System.currentTimeMillis(); long totalTime = (endTime - startTime); if ( totalTime > 300 ) { logger.debug(TAG + "_" + e.getCalculatorEventData().getEventId(), "Started event: " + e.getCalculatorEventType() + " with data: " + e.getData() + " for: " + listener.getClass().getSimpleName()); logger.debug(TAG + "_" + e.getCalculatorEventData().getEventId(), "Total time, ms: " + totalTime); - } + }*/ } } } diff --git a/calculatorpp-core/src/test/java/org/solovyev/android/calculator/AbstractCalculatorTest.java b/calculatorpp-core/src/test/java/org/solovyev/android/calculator/AbstractCalculatorTest.java index 0aaf1a93..8b4156fb 100644 --- a/calculatorpp-core/src/test/java/org/solovyev/android/calculator/AbstractCalculatorTest.java +++ b/calculatorpp-core/src/test/java/org/solovyev/android/calculator/AbstractCalculatorTest.java @@ -11,7 +11,7 @@ import org.solovyev.android.calculator.history.CalculatorHistory; public class AbstractCalculatorTest { protected void setUp() throws Exception { - CalculatorLocatorImpl.getInstance().init(new CalculatorImpl(), CalculatorTestUtils.newCalculatorEngine(), Mockito.mock(CalculatorClipboard.class), Mockito.mock(CalculatorNotifier.class), Mockito.mock(CalculatorHistory.class), null); + CalculatorLocatorImpl.getInstance().init(new CalculatorImpl(), CalculatorTestUtils.newCalculatorEngine(), Mockito.mock(CalculatorClipboard.class), Mockito.mock(CalculatorNotifier.class), Mockito.mock(CalculatorHistory.class), new SystemOutCalculatorLogger()); CalculatorLocatorImpl.getInstance().getEngine().init(); } diff --git a/calculatorpp-core/src/test/java/org/solovyev/android/calculator/CalculatorTestUtils.java b/calculatorpp-core/src/test/java/org/solovyev/android/calculator/CalculatorTestUtils.java index acde331d..09055b37 100644 --- a/calculatorpp-core/src/test/java/org/solovyev/android/calculator/CalculatorTestUtils.java +++ b/calculatorpp-core/src/test/java/org/solovyev/android/calculator/CalculatorTestUtils.java @@ -22,7 +22,7 @@ public class CalculatorTestUtils { public static final int TIMEOUT = 1; public static void staticSetUp() throws Exception { - CalculatorLocatorImpl.getInstance().init(new CalculatorImpl(), newCalculatorEngine(), Mockito.mock(CalculatorClipboard.class), Mockito.mock(CalculatorNotifier.class), Mockito.mock(CalculatorHistory.class), null); + CalculatorLocatorImpl.getInstance().init(new CalculatorImpl(), newCalculatorEngine(), Mockito.mock(CalculatorClipboard.class), Mockito.mock(CalculatorNotifier.class), Mockito.mock(CalculatorHistory.class), new SystemOutCalculatorLogger()); CalculatorLocatorImpl.getInstance().getEngine().init(); } diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java index 25283a0b..fa55c232 100644 --- a/calculatorpp/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java +++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java @@ -16,6 +16,9 @@ import org.solovyev.android.calculator.text.TextProcessor; import org.solovyev.android.calculator.view.TextHighlighter; import org.solovyev.android.view.AutoResizeTextView; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + /** * User: serso * Date: 9/17/11 @@ -53,6 +56,9 @@ public class AndroidCalculatorDisplayView extends AutoResizeTextView implements @NotNull private final Handler uiHandler = new Handler(); + @NotNull + private final ExecutorService bgExecutor = Executors.newSingleThreadExecutor(); + private volatile boolean initialized = false; /* @@ -96,12 +102,7 @@ public class AndroidCalculatorDisplayView extends AutoResizeTextView implements try { viewStateChange = true; - long startTime = System.currentTimeMillis(); final CharSequence text = prepareText(state.getStringResult(), state.isValid()); - long endTime = System.currentTimeMillis(); - long totalTime = (endTime - startTime); - CalculatorLocatorImpl.getInstance().getLogger().debug("CalculatorDisplayView", "Total time, ms: " + totalTime); - AndroidCalculatorDisplayView.this.state = state; if (state.isValid()) { diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/view/TextHighlighter.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/view/TextHighlighter.java index cab60462..be605976 100644 --- a/calculatorpp/src/main/java/org/solovyev/android/calculator/view/TextHighlighter.java +++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/view/TextHighlighter.java @@ -32,36 +32,47 @@ public class TextHighlighter implements TextProcessor tagAttributes) { result.append("<").append(tag); - if (tagAttributes != null) { + if (tagAttributes != null && !tagAttributes.entrySet().isEmpty()) { for (Map.Entry entry : tagAttributes.entrySet()) { // attr1="attr1_value" attr2="attr2_value" result.append(" ").append(entry.getKey()).append("=\"").append(entry.getValue()).append("\""); @@ -192,14 +203,15 @@ public class TextHighlighter implements TextProcessor"); for (; i < s.length(); i++) { char ch = s.charAt(i); + String strCh = String.valueOf(ch); - if (MathType.open_group_symbol.getTokens().contains(String.valueOf(ch))) { + if (MathType.open_group_symbol.getTokens().contains(strCh)) { result.append(ch); result.append(""); i = processBracketGroup(result, s, i + 1, numberOfOpenings + 1, maxNumberOfGroups); @@ -207,7 +219,7 @@ public class TextHighlighter implements TextProcessor textHighlighter = new TextHighlighter(Color.WHITE, false); + + final int count = 1000; + final String subExpression = "cos(acos(t8ln(t5t85tln(8ln(5t55tln(5))))))+tln(88cos(tln(t)))+t√(ln(t))"; + final StringBuilder expression = new StringBuilder(subExpression.length() * count); + for ( int i = 0; i < count; i++ ){ + expression.append(subExpression); + expression.append("+"); + } + expression.append(subExpression); + + long startTime = System.currentTimeMillis(); + textHighlighter.process(expression.toString()); + long endTime = System.currentTimeMillis(); + System.out.println("Total time, ms: " + (endTime - startTime)); + } }