Существует ли оптимизатор Байт-кода Java, который удаляет бесполезный gotos?

Этот вопрос может быть старым, но есть документированный способ достижения этого пути. Он прост в реализации. Цитируется :

Чтобы включить полнотекстовый поиск в ваших данных 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

18
задан hsivonen 3 June 2009 в 13:20
поделиться

7 ответов

Я чувствую твою боль. Однажды мне пришлось написать парсер, в котором было около 5kloc кода if (str.equals (...)). Я разбил на несколько методов по строкам parse1, parse2 и т. Д. Если parse1 не привел к разобранному ответу, был вызван parse2 и т. Д. Это не обязательно лучший метод, но он делает то, что вам нужно. .

1
ответ дан 30 November 2019 в 09:48
поделиться

Имеет ли значение, если вы не компилируете с отладочными символами (например, флаг -g в javac)? Это может привести к снижению метода ниже магического предела.

0
ответ дан 30 November 2019 в 09:48
поделиться

Было бы невозможно преобразовать метод в подметоды? Современные JIT в любом случае встраивают эти вызовы.

0
ответ дан 30 November 2019 в 09:48
поделиться

Один метод компиляции более 8000 байт? Кто-нибудь понимает этот код? Можно проверить? Попробуйте разделить его на несколько (частных?) Методов с осмысленными именами вместо того, чтобы возиться с оптимизатором!

Хорошо, может быть, есть случаи, когда большие методы допустимы. Но извините, в вопросе нет намеков.

0
ответ дан 30 November 2019 в 09:48
поделиться

Если это цикл токенизатора, не лучше ли было бы сделать это с набором отображений, управляемых данными, и при необходимости немного отражения?

Итак, вы бы сохранили свой токен совпадает в структуре, которая сопоставляет их с данными о синтаксисе этого токена и методах, реализующих связанные функции. Поиск можно оптимизировать по структуре и избежать большого цикла.

0
ответ дан 30 November 2019 в 09:48
поделиться

Вырастет ли ваша производительность, если вы запустите программу сжатия / обфускации байт-кода в своем классе? например, yguard, proguard, ...

может быть, вы можете написать постпроцессор файла класса, используя asm, потому что ваш вариант использования настолько специфичен.

даже если вы удалите все бессмысленные goto, приведет ли это вас к магическому пределу?

0
ответ дан 30 November 2019 в 09:48
поделиться

В списке библиотек байт-кода упоминаются BCEL и ASM , о которых я слышал раньше, а также многие другие делает разные вещи.

0
ответ дан 30 November 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: