
Oleg
07.12.2017
14:57:18
Ну лучше конечно у автора спросить
Да там не мерит по реальным тикам, не замерить на сколько быстрее
А так вообще прям лисп вспомнился
С рекурсиями

Google

Michael
07.12.2017
15:01:30
$: 16.digits
=> [6, 1]

Anton
07.12.2017
15:01:55
Только это рубишное?
Или рельсовое или руби 2.4?

Oleg
07.12.2017
15:02:18
Рельсовое
Так что увы

Michael
07.12.2017
15:02:54
черт)) я уже потерялся, что рельсовое, что рубишное))

Oleg
07.12.2017
15:03:00
А не
Я не на том типе данных проверил
Да, рубишное
Да, путаница та ещё ?
2.days.ago и тп
Но задача всё-равно не интересная потому что нет замера скорости

Google

Oleg
07.12.2017
15:04:07
Или там колво символов хотябы

Anton
07.12.2017
15:05:00
Это тебе не гольф
Хотя гольф приелльная штука
* прикольная

Oleg
07.12.2017
15:07:37
Если меряться крутостью кода, то по критериям

Michael
07.12.2017
15:10:01
что то я залип в эту задачку)))
Буду кстати рад любому чтиву на эту тему

No
07.12.2017
15:47:24
Скажите мне товарищи, нубский вопрос хочу выдать
Допустим есть N+1, но не классический N+1, а связанный с COUNT запросами
Каждый этот запрос отрбатаывает за 0,2ms
Допустим их 25-50
Времени это не занимает
Критично ли это по каким-то другим критериям?
Подозреваю, что критично, но чисто интуитивно
Знаю как это пофиксить, но plain sql писать вообще не хочу

Eugene
07.12.2017
15:49:12
А быстродействие может сильно упасть в будущем? Число записей там вырасти?
Если дашь пример, то может и без SQL будет решение

No
07.12.2017
15:49:32
Там их и сейчас не мало, но каунт довольно быстрый
Потому что много условий для рассчёта

Google

No
07.12.2017
15:51:59
Сейчас попытаюсь описать пример, сек
Допустим есть моделька какого-нибудь события. Юзер может участвовать в событии. Юзер также может быть в трёх состояниях: привязан к событию, начал прогресс по событию, закончил событие. Запрашивается список событий. Для каждого события я должен вывести общее колличество юзеров, колличество стартовавших, но не закончивших юзеров, и колличество завершивших событие юзеров
Тобишь по итогу на кажде событие летит три count запроса, которые отрабатывают быстро
Но на странице пусть будет 50 событий
Тобишь 150 запросов, которые в сумме займут околок 30-40мс, что не критично
Критично ли само колличество запросов?

Eugene
07.12.2017
16:08:36
Можно одним запросом получить все события. А вторым эту статистику для событий из первого запроса. Ну и сгруппировать там по айдишнику в хэш. А в цикле уже доставать это из хэша
Раз уж зашел разговор о производительности - посоветуйте плз сервисы для мониторинга типа new relic, только дешевые?)

Иван
07.12.2017
16:27:56

No
07.12.2017
16:54:11
по этой соединяющей таблице и определяется колличество
но тут вопрос в другом
колличество запрсоов является критичным фактором? создает ли это какую-то дополнительную нагрузку на базу?
если нет - то перфоманс устраивает и оптимизировать это не имеет смысла

Иван
07.12.2017
16:57:27
можно наврно как то так: Event.joins(:users).select("events.*, count(user_events.id) as total_users, sum(user_events.status = 0) as bounded_users, sum(user_events.status = 1) as started_users, sum(user_events.status = 3) as finished_users")
ну это при event has_many users through user_events

No
07.12.2017
16:59:52
не факт что поможет, но попытаюсь обдумать эту идею

Иван
07.12.2017
17:01:36
ну и если пг, то там надо будет делать sum((user_events.status = 0)::int)

Google

No
07.12.2017
17:01:42
MySQL

Vladimir
07.12.2017
17:01:49

rekero
07.12.2017
17:02:19
где условие в elsif?

Andrew
07.12.2017
17:02:22
elsif замени на else

Vladimir
07.12.2017
17:02:44

Иван
07.12.2017
17:18:00

No
07.12.2017
17:27:15
ещё нюанс
знаю, что так можно сделать
но не помню как
я делаю group - мне возвращает релейшен
как заставить вернуть хэш с ключом по ключу групировки?

Иван
07.12.2017
17:36:30
Ну если ты после группировки вызовешь какую нибудь аггрегирующую функция типо sum, count, min итп то должен вернуться хеш
или ты про что то другое?

No
07.12.2017
17:46:05
всё, уже разобрался
спасибо
получилось оптимизировать, отрабатывает в два раза быстрее бонусом
завтра надо будет запариться с чистым кодом ещё

Иван
07.12.2017
17:47:50
как в итоге сделал?

Google

No
07.12.2017
17:48:23
сделал твой вариант выше
правда немного модифицировал
но идея осталась та же, модифицировал чисто под нужды моего приложения
в итоге делаю запрос на список сущностей
а потом запрос на все необходимые каунты, отдельный
и маплю их на презентере
единственнное - мне не нравится, что ActiveRecord возвращает мне релейшен с объектами, которые по факту ничего не значат в этом контексте
вылечу своим конвертором в хэш

Dima
07.12.2017
20:45:08

Ярослав
07.12.2017
21:47:24
Если немного ужать код:
def digital_root(n, b=10)
r = 0
loop do
r, n = (r + n % b) % b + (r + n % b) / b, n / b
return r if n==0
end
end

Alex
08.12.2017
04:36:48

Максим
08.12.2017
08:14:45

Pavel
08.12.2017
09:33:32
Подскажите как найти описание вот этого синтаксиса s.scan(/\d+/)?
Вчера решал кату с поиском цифр в тексте, пробовал разные поиски типа define range, define symbols и так далее и пришлось просто скопипастить вот такую готовую структуру
"^[0-9]" либо вот такую
по какому слову можно найти описание как составлять такие диапазоны?

Roman
08.12.2017
09:34:40

Pavel
08.12.2017
09:35:31
Точно, спасибо!

Dima
08.12.2017
11:42:43