Мне необходимо в бенчмарке выполнять некоторые операции в другом потоке, для того что бы их не создавать каждый раз, я хочу иметь трэд пул и в нем выполнять эти операции.
Достаточно ли быстрый джавовый ExecutorService или стоит написать свой ?
Судя по тому что происходит внутри кода ThreadPoolExecutor
, вам он не подходит. Потому что внутри него создается поток для новой задачи, этого можно избежать, создав такой поток с помощью пустой задачи заранее, но все же много логики остается. Думаю что-то своё, что будет в цикле ожидать появления чего либо в AtomicReference
или ConcurrentQueue
будет быстрее.
Это с одной стороны. С другой стороны, не забывайте, что в любом случае есть такая штука как операционная система и время на переключения контекста при смене потока. Вам все равно не получится избежать некоторых задержек. (если вы когда нибудь писали тесты скажем на си, то там всегда результаты отличались на 10-20, порой даже на 100мс - вот вам и система)
То есть у вас уже есть ограничения на длительность теста, чтобы можно было как-то свести работу системы до "в пределе погрешности".
В третьих Java машина. Она постоянно оптимизирует код, ориентироваться на цифры полученые просто самописными тестами с System.currentTimeMillis очень сложно. Это уже тема отдельного вопроса, есть определенные бенчмарки, есть списки правил, что-то конкретное подсказать сложно, не было у меня необходимости еще получать точные цифры.
В четвертых, это что такой за бенчмарк с отдельными потоками? Конечно может быть у вас там "всё схвачено" и вы понимаете что делаете, но звучито это странно. По крайней мере в совокупности с заморочками насчет скорости тред пула.
В общем как вывод - тред пул далеко не самая большая проблема что у вас возникает. Используйте обычный ThreadPoolExecutor, если вдруг вам покажется, что он на что-то там влияет, ну напишите свою реализацию. Это по факту дело 10 минут.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как сделать, чтобы некоторые элементы, расположенные в Vbox не растягивалисьСкажем, там у меня есть Vbox, и там 2 элемента, изображение и таблица
Задача: из переданного HTML создать что-то наподобие печати (в заданных координатах) внутри существующего PDF-документаЯ нашел два варианта...
Есть List, типа String, хочу вывести все элементы в одну строчку, через запятую
Добрый день! Проблемка с авторизациейАвторизация в приложении осуществляется по логину и паролю от личного кабинета на сайте