Size: a a a

2020 March 05

I

Ilia in pro.jvm
так что надо эмпирически выводить на целевой платформе
источник

SS

Sergei S in pro.jvm
Утверждается что это сильно привязано к число ядер процессора, нет?
источник

SS

Sergei S in pro.jvm
Считаем что в фоне больше ничего. ОС Линукс
источник

AO

Alexey Otts in pro.jvm
Sergei S
скажем так относительный притрост числа нитей не дает прироста в производительности работы с таким счетчиком
Это не ответ на вопрос прирост относительно чего?
источник

AO

Alexey Otts in pro.jvm
Sergei S
Утверждается что это сильно привязано к число ядер процессора, нет?
Там обычные cas операции, которые максимально зависят от реализации в железе
источник

MV

Maksim V in pro.jvm
Всем добрый день. Такой вопрос: у сервиса, написанном на спринге, есть два эндпоинта: /path1?resource=123 и /path2?resource=123.  Выполнение бизнес логики примерно занимает по 2 секунды. Подскажите, пожалуйста, как сделать так, чтобы они не могли выполняться одновременно, если resource совпадает. К примеру, если я стучуть на /path2?resource=123, но при этом мой сосед постучался на /path1?resource=123, то необходимо дать выполниться логике /path1 до конца, и только после этого начать обработку моего запроса
источник

C

Cargeh in pro.jvm
Maksim V
Всем добрый день. Такой вопрос: у сервиса, написанном на спринге, есть два эндпоинта: /path1?resource=123 и /path2?resource=123.  Выполнение бизнес логики примерно занимает по 2 секунды. Подскажите, пожалуйста, как сделать так, чтобы они не могли выполняться одновременно, если resource совпадает. К примеру, если я стучуть на /path2?resource=123, но при этом мой сосед постучался на /path1?resource=123, то необходимо дать выполниться логике /path1 до конца, и только после этого начать обработку моего запроса
(r/w) лок на ресурс брать (по айдишнику, например)?
источник

SP

Sam Panza in pro.jvm
Maksim V
Всем добрый день. Такой вопрос: у сервиса, написанном на спринге, есть два эндпоинта: /path1?resource=123 и /path2?resource=123.  Выполнение бизнес логики примерно занимает по 2 секунды. Подскажите, пожалуйста, как сделать так, чтобы они не могли выполняться одновременно, если resource совпадает. К примеру, если я стучуть на /path2?resource=123, но при этом мой сосед постучался на /path1?resource=123, то необходимо дать выполниться логике /path1 до конца, и только после этого начать обработку моего запроса
Попахивает select for update, я угадал?
источник

I

Ilia in pro.jvm
Maksim V
Всем добрый день. Такой вопрос: у сервиса, написанном на спринге, есть два эндпоинта: /path1?resource=123 и /path2?resource=123.  Выполнение бизнес логики примерно занимает по 2 секунды. Подскажите, пожалуйста, как сделать так, чтобы они не могли выполняться одновременно, если resource совпадает. К примеру, если я стучуть на /path2?resource=123, но при этом мой сосед постучался на /path1?resource=123, то необходимо дать выполниться логике /path1 до конца, и только после этого начать обработку моего запроса
источник

SS

Sergei S in pro.jvm
Alexey Otts
Это не ответ на вопрос прирост относительно чего?
Относительно того дают ли новые нити давать прирост производительности, пропорционально числу нитей..
источник

GV

George Vassilev in pro.jvm
Maksim V
Всем добрый день. Такой вопрос: у сервиса, написанном на спринге, есть два эндпоинта: /path1?resource=123 и /path2?resource=123.  Выполнение бизнес логики примерно занимает по 2 секунды. Подскажите, пожалуйста, как сделать так, чтобы они не могли выполняться одновременно, если resource совпадает. К примеру, если я стучуть на /path2?resource=123, но при этом мой сосед постучался на /path1?resource=123, то необходимо дать выполниться логике /path1 до конца, и только после этого начать обработку моего запроса
очередь можно организовать
источник

SS

Sergei S in pro.jvm
Alexey Otts
Там обычные cas операции, которые максимально зависят от реализации в железе
Зависит в основной степени от числа ядер процессора?
источник

AO

Alexey Otts in pro.jvm
Ой всё я сдаюсь
источник

А

Александр in pro.jvm
всем привет! помогите пожалуйста понять, как правильно покрывать тестами такой код. Есть класс, запускаемый по расписанию. В нем метод - №1 - роутер, который а). вызовет метод №2, который дернет внешнее API, б). передаст результат в метод №3 который что-то сделает с результатом. в). передаст получившееся на шаге "б" в другй класс для сохранения в БД, транслирования во внешнюю очередь и т.п. Методы по сути все приватные, извне они не дергаются.
И как бы хотелось бы проверить что скажем метод №3 делает правильные преобразования. Но выносить его для этого в отдельный класс... ?
А у метода №2 по сути только и нужно понять, что он дергает API с правильными парментрами.
И вообще, вот эта конструкция в целом правильныя? Может изначально проблема не в тестах, а я должен по другому классы и методы организовать?
источник

ДЧ

Денис Чиканов in pro.jvm
Александр
всем привет! помогите пожалуйста понять, как правильно покрывать тестами такой код. Есть класс, запускаемый по расписанию. В нем метод - №1 - роутер, который а). вызовет метод №2, который дернет внешнее API, б). передаст результат в метод №3 который что-то сделает с результатом. в). передаст получившееся на шаге "б" в другй класс для сохранения в БД, транслирования во внешнюю очередь и т.п. Методы по сути все приватные, извне они не дергаются.
И как бы хотелось бы проверить что скажем метод №3 делает правильные преобразования. Но выносить его для этого в отдельный класс... ?
А у метода №2 по сути только и нужно понять, что он дергает API с правильными парментрами.
И вообще, вот эта конструкция в целом правильныя? Может изначально проблема не в тестах, а я должен по другому классы и методы организовать?
То, что совершенно раздельные куски логики с разными внешними зависимостями спрятаны в приватные методы одного класса - так себе затея, да.
источник

RU

Roman Ushakov in pro.jvm
Жесть
источник

SP

Sam Panza in pro.jvm
Александр
всем привет! помогите пожалуйста понять, как правильно покрывать тестами такой код. Есть класс, запускаемый по расписанию. В нем метод - №1 - роутер, который а). вызовет метод №2, который дернет внешнее API, б). передаст результат в метод №3 который что-то сделает с результатом. в). передаст получившееся на шаге "б" в другй класс для сохранения в БД, транслирования во внешнюю очередь и т.п. Методы по сути все приватные, извне они не дергаются.
И как бы хотелось бы проверить что скажем метод №3 делает правильные преобразования. Но выносить его для этого в отдельный класс... ?
А у метода №2 по сути только и нужно понять, что он дергает API с правильными парментрами.
И вообще, вот эта конструкция в целом правильныя? Может изначально проблема не в тестах, а я должен по другому классы и методы организовать?
Тестировать надо не сам факт вызова методов с "правильными" параметрами, а результат их работы / ожидаемые сайд эффекты
источник

А

Александр in pro.jvm
Денис Чиканов
То, что совершенно раздельные куски логики с разными внешними зависимостями спрятаны в приватные методы одного класса - так себе затея, да.
да в том то и дело, что там нет разных внешних зависимостей. это просто шаги одного пайплайна, которые можно ыбло бы и в один супер-метод объединить, просто такие супер-методы меня пугают :)
источник

AO

Alexey Otts in pro.jvm
Sergei S
Относительно того дают ли новые нити давать прирост производительности, пропорционально числу нитей..
Если кроме инкремента ничего не делается, то ответ 1 поток, больше потоков будут это делать медленнее
источник

AO

Alexey Otts in pro.jvm
Александр
да в том то и дело, что там нет разных внешних зависимостей. это просто шаги одного пайплайна, которые можно ыбло бы и в один супер-метод объединить, просто такие супер-методы меня пугают :)
Декомпозируй если пугают
источник