Этот вопрос может быть старым, но есть документированный способ достижения этого пути. Он прост в реализации. Цитируется :
Чтобы включить полнотекстовый поиск в ваших данных Cloud Firestore, используйте стороннюю службу поиска, такую как Algolia. Рассмотрим приложение для создания заметок, в котором каждая заметка является документом:
Алголия будет частью вашего firebase functions
и будет выполнять все необходимые вам поиски.
// Update the search index every time a blog post is written.
exports.onNoteCreated = functions.firestore.document('notes/{noteId}').onCreate(event => {
// Get the note document
const note = event.data.data();
// Add an 'objectID' field which Algolia requires
note.objectID = event.params.noteId;
// Write to the algolia index
const index = client.initIndex(ALGOLIA_INDEX_NAME);
return index.saveObject(note);
});
Для реализации поиска лучше всего использовать мгновенный поиск - android
Образец поиска изображения: GIF
Я чувствую твою боль. Однажды мне пришлось написать парсер, в котором было около 5kloc кода if (str.equals (...)). Я разбил на несколько методов по строкам parse1, parse2 и т. Д. Если parse1 не привел к разобранному ответу, был вызван parse2 и т. Д. Это не обязательно лучший метод, но он делает то, что вам нужно. .
Имеет ли значение, если вы не компилируете с отладочными символами (например, флаг -g в javac)? Это может привести к снижению метода ниже магического предела.
Было бы невозможно преобразовать метод в подметоды? Современные JIT в любом случае встраивают эти вызовы.
Один метод компиляции более 8000 байт? Кто-нибудь понимает этот код? Можно проверить? Попробуйте разделить его на несколько (частных?) Методов с осмысленными именами вместо того, чтобы возиться с оптимизатором!
Хорошо, может быть, есть случаи, когда большие методы допустимы. Но извините, в вопросе нет намеков.
Если это цикл токенизатора, не лучше ли было бы сделать это с набором отображений, управляемых данными, и при необходимости немного отражения?
Итак, вы бы сохранили свой токен совпадает в структуре, которая сопоставляет их с данными о синтаксисе этого токена и методах, реализующих связанные функции. Поиск можно оптимизировать по структуре и избежать большого цикла.
Вырастет ли ваша производительность, если вы запустите программу сжатия / обфускации байт-кода в своем классе? например, yguard, proguard, ...
может быть, вы можете написать постпроцессор файла класса, используя asm, потому что ваш вариант использования настолько специфичен.
даже если вы удалите все бессмысленные goto, приведет ли это вас к магическому пределу?
В списке библиотек байт-кода упоминаются BCEL и ASM , о которых я слышал раньше, а также многие другие делает разные вещи.