Есть Java-сервис, который взаимодействует с PHP с помощью Apache Thrift.
Ядро сервиса - операции сложения битовых векторов. Сама логика сервиса проста (не требует особых или математических знаний, просто сложение больших массивов данных). Объем данных в памяти - несколько гигабайт.
Нужно переписать модуль, чтобы повысить производительность:
- использовать последнюю Java - использовать современные наработки;
- заменить Apache Thrift на что-то более производительное: скорее всего, на FlatBuffers (нужно тестировать);
- подобрать более эффективные алгоритмы вычислений (есть их описания) - как вариант, добавить индексные массивы координат, в которых хранятся 1.
Сейчас запрос выполняется за 50-400 мс. Нужно, чтобы он укладывался в 10-100 мс.
Вариант - переписать модуль на С/Rust с использованием библиотеки Roaring Bitmaps (или подобной альтернативы).
Просьба рассказать о своем опыте.
Дополнительная информация по теме - в похожей разработке:
-
234 Забабахаю.
!===авыфавыфавы!===авыфавыфавы!===авыфавыфавы!===авыфавыфавы!===авыфавыфавы
-
60 1 Предлагаю ваши вычисления распараллелить, для этого мне понадобится очень хороший компьютер с как минимум с восемью ядрами на борту. И давайте заложимся на то, что в науке отрицательный результат, это тоже очень хороший результат. :-) Заплатите мне к примеру 30 % стоимости за научные изыскания, если ничего не получится. А если всё получится то 100 %. Я в вашей схеме вызовов менять ничего не буду, потому что даже замена Java на С++ даст от силы 5 % скорости, а замена Apache Thrift на FlatBuffers вообще ничего не даст. А новая версия JDK может разве что замедлить вычисления.
Короче я предлагаю ускорить процесс вычислений за счет дополнительных ядер на борту, то есть за счет увеличения суммарной мощности компьютера. А еще лучше чтобы самих процессоров было 2, а еще лучше четыре, тогда у меня в распоряжении будет 32 ядра. Да там ваши битовые векторы, как пулей будут летать.
Использовать графический процессор вряд ли получится, так как на сервера редко кто-то ставит
GeForce RTX 2080 Ti поэтому лучше использовать штатные ядра процессора.
Программу вашу придется сначала оформить как десктопную и переписать вообще весь алгоритм вычислений.
-
В предыдущем вашем проекте было несколько дополнительных вариантов для оптимизации... Опробовали некоторые? Не помогло?
Кстати, для PHP ещё можно ваять расширения (напр., на C++) - возможно, это направление тоже пригодится. Хотя если узкое место - в Java-сервисе, то PHP-оптимизация не особо поможет.
-
удалено модератором
-
удалено модератором
-
Если есть поддержка Intel HD Graphics, можно попробовать распарлаллелить на gpu. Из плюсов, огромный обьем данных не придется катать по шине туда обратно потому что и у центрального и у графический проца общая память, мощность gpu при распарлаллеливании.
-
Актуальные фриланс-проекты в категории C и C++
Скрипт который будет взаимодействовать по картинкеНужен скрипт который будет взаимодействовать по картинке + тексту )названию товара на экране) + цене. Проще говоря, скрипт должен нажимать на логотип площадки (слева сверху белый текст) для обновления ассортимента товаров (каждые секунды 3-5), затем должен быть поиск по картинке… C и C++, Python ∙ 8 ставок |
Создать телеграмм бота с интеграцией GPT
12 000 UAH
Техническое задание: 1) Создать телеграм бота по примеру, При старте спрашивать язык: - русский -английский Все остальное по примеру первого бота: предложить отправить фото с которого будет взято лицо, второе - попросить видео на которое будет накладываться лицо. Затем в… C и C++, Python ∙ 12 ставок |
Настройка обмена данными между jetson nano и другим устройством по can шиНастроить обмен данными между jetson nano и другим устройством по can шине с помощью RS485 CAN документации и примера здесь: https://www.waveshare.com/wiki/RS485_CAN_for_Jetson_Nano Пакет передаемых данных разбит на фремах размером по 8 байтов, кодирование первых 7 байтов… C и C++, Linux и Unix ∙ 2 ставки |
Інфракрасний датчик температури ZigBeeПотрібен Інфракрасний датчик температури з передачею данних через протоколо ZigBee на сервер Home Assistants в MQTT Оборудованіе: Модуль ESP32-C6-WROOM-1-N8 + инфракрасного термометра MLX90614 + добавить светодиод лазер для обозначения где считивается температура C и C++, Встраиваемые системы и микроконтроллеры ∙ 1 ставка |
Создать бота в телеграм по парсингу сообщений
785 UAH
Нужно скопировать функционал данного бота - t. me /lead_observer_bot Функционал: 1. забить ключевые слова 2. забить группы, из которых будет происходить парсинг сообщений 3. возможность добавления и удаления слов и групп 4. получение уведомлений о новых сообщениях по ключевым… C и C++, Python ∙ 14 ставок |