mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-06-20 16:10:52 +00:00
enable validSpellingWordCache for spell checker
This commit is contained in:
parent
0187beeae5
commit
0002ed63eb
2 changed files with 19 additions and 13 deletions
|
@ -88,15 +88,8 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
|
||||||
private static final Class<?>[] DICT_FACTORY_METHOD_ARG_TYPES =
|
private static final Class<?>[] DICT_FACTORY_METHOD_ARG_TYPES =
|
||||||
new Class[] { Context.class, Locale.class, File.class, String.class, String.class };
|
new Class[] { Context.class, Locale.class, File.class, String.class, String.class };
|
||||||
|
|
||||||
// todo: these caches are never even set, as the corresponding functions are not called...
|
// todo: write cache never set, and never read (only written)
|
||||||
// and even if they were set, one is only written, but never read, and the other one
|
// (initially was the same for the read cache, why?)
|
||||||
// is only read and thus empty and useless -> why?
|
|
||||||
// anyway, we could just set the same cache using the set functions
|
|
||||||
// but before doing this, check the potential performance gains
|
|
||||||
// i.e. how long does a "isValidWord" check take -> on S4 mini 300 µs per dict if ok, but
|
|
||||||
// sometimes it can also be a few ms
|
|
||||||
// os if the spell checker is enabled, it's definitely reasonable to cache the results
|
|
||||||
// but this needs to be done internally, as it should be by language
|
|
||||||
private LruCache<String, Boolean> mValidSpellingWordReadCache;
|
private LruCache<String, Boolean> mValidSpellingWordReadCache;
|
||||||
private LruCache<String, Boolean> mValidSpellingWordWriteCache;
|
private LruCache<String, Boolean> mValidSpellingWordWriteCache;
|
||||||
|
|
||||||
|
@ -461,6 +454,9 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
|
||||||
if (mValidSpellingWordWriteCache != null) {
|
if (mValidSpellingWordWriteCache != null) {
|
||||||
mValidSpellingWordWriteCache.evictAll();
|
mValidSpellingWordWriteCache.evictAll();
|
||||||
}
|
}
|
||||||
|
if (mValidSpellingWordReadCache != null) {
|
||||||
|
mValidSpellingWordReadCache.evictAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void asyncReloadUninitializedMainDictionaries(final Context context,
|
private void asyncReloadUninitializedMainDictionaries(final Context context,
|
||||||
|
@ -912,11 +908,16 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
|
||||||
return cachedValue;
|
return cachedValue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
boolean result = false;
|
||||||
for (DictionaryGroup dictionaryGroup : mDictionaryGroups) {
|
for (DictionaryGroup dictionaryGroup : mDictionaryGroups) {
|
||||||
if (isValidWord(word, ALL_DICTIONARY_TYPES, dictionaryGroup))
|
if (isValidWord(word, ALL_DICTIONARY_TYPES, dictionaryGroup)) {
|
||||||
return true;
|
result = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return false;
|
}
|
||||||
|
if (mValidSpellingWordReadCache != null)
|
||||||
|
mValidSpellingWordReadCache.put(word, result);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// this is unused, so leave it for now (redirecting to isValidWord seems to defeat the purpose...)
|
// this is unused, so leave it for now (redirecting to isValidWord seems to defeat the purpose...)
|
||||||
|
|
|
@ -6,11 +6,16 @@
|
||||||
|
|
||||||
package org.dslul.openboard.inputmethod.latin;
|
package org.dslul.openboard.inputmethod.latin;
|
||||||
|
|
||||||
|
import android.util.LruCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory for instantiating DictionaryFacilitator objects.
|
* Factory for instantiating DictionaryFacilitator objects.
|
||||||
*/
|
*/
|
||||||
public class DictionaryFacilitatorProvider {
|
public class DictionaryFacilitatorProvider {
|
||||||
public static DictionaryFacilitator getDictionaryFacilitator(boolean isNeededForSpellChecking) {
|
public static DictionaryFacilitator getDictionaryFacilitator(boolean isNeededForSpellChecking) {
|
||||||
return new DictionaryFacilitatorImpl();
|
final DictionaryFacilitator facilitator = new DictionaryFacilitatorImpl();
|
||||||
|
if (isNeededForSpellChecking)
|
||||||
|
facilitator.setValidSpellingWordReadCache(new LruCache<>(200));
|
||||||
|
return facilitator;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue