
Anton
28.09.2017
08:04:29
http://tenderlovemaking.com/2017/09/27/visualizing-your-ruby-heap.html

Nikolay
28.09.2017
08:05:01
хоспаде
побитовые операции
где мой CRUD!?

Google

Nikolay
28.09.2017
08:07:37
п.с на самом деле шучу, в минске вроде доклад рассказывал как они оптимизировали руби исследуя аллокацию ресурсов и прочую магию…вот это некст лвл

Anton
28.09.2017
08:07:58

Alexey
28.09.2017
08:08:12
?
Посты Аарона заходят только после 3-4 прочтений и то не полностью. Точно некст левел

Anton
28.09.2017
08:09:23
да ладно, у него был крутой пост про дебаг puts

Maksim
28.09.2017
08:09:43
> They are aligned at 40 bytes
а чего не 64?

Nikolay
28.09.2017
08:09:50

Alex
28.09.2017
08:10:00

Alexey
28.09.2017
08:10:04

Nikolay
28.09.2017
08:10:24

Maksim
28.09.2017
08:13:35
но пост годный, потому что интроспекция аллокации — это очень важный шаг к серьезному ускорению отдачи страниц. Я ещё в 2009-м как-то полез ковыряться: почему страница _рендерится_ 600 мс. Оказалось что надо убрать все content_tag :div do ... и тогда безумная аллокация блоков уходит и время падает до 200 мс

Google

Maksim
28.09.2017
08:13:43
что в принципе всё равно было в 100 раз выше нормы

Alexey
28.09.2017
08:14:07
Про это Нейт хорошо писал
Какая разница 10 или 100? или Даже 200?

Alex
28.09.2017
08:14:32
теперь добавь SPA. Вуаля
сайт неотзывчивый.

Maksim
28.09.2017
08:15:18
Какая разница 10 или 100? или Даже 200?
Ты серьезно? Вообще если страница делается меньше 50 мс, то у пользователя хорошее годное ощущение что здесь можно гулять и смотреть. Если больше, то он начинает ждать

Alex
28.09.2017
08:15:55
многие сайты проводили замеры на то как влияет скорость работы сайта на показатели.
В общем напрямую влияет.

Alexey
28.09.2017
08:16:28
Я не говорю, что она не влияет
Я говорю, что когда разговор заходит о ранице меду 10мс и 100мс - это бессмысленые споры

Maksim
28.09.2017
08:17:47
ну ты меня сейчас ставишь просто в тупик, потому что обычно с таким настроем легко можно доползти до 900 мс на главную

Alex
28.09.2017
08:18:51
т.е если у тебя за 10 отрисовал, то быстрее перейдет к следующему запросу этого же или другого пользователя.

Alexey
28.09.2017
08:19:59
Ну это уже перебор, откровенно:)
Ребят, еще раз, я не спорю что это важно, но если пользователь ПОЛУЧИЛ старницу за 100мс то он даже не увидит заницы

Alex
28.09.2017
08:20:20

Maksim
28.09.2017
08:20:41
э не. У тебя есть получение страницы, есть получение всего остального, есть первичный рендер и потом уже есть полное введение страницы в строй
если оно до 300 мс, то молодец, ты сделал так же круто, как это было в 95-м году
если больше, то не молодец =)

Google

Maksim
28.09.2017
08:21:53
поэтому 100 мс на сервере — это на поход к БД, обработку в логике и рендеринг
и честно говоря когда рендеринг занимает дольше 5-10 тысяч микросекунд — это вызывает массу вопросов
но для развесистого рубийного темплейта не проблема сожрать и 500 мс чисто на _рендеринге_
так что есть за что бодаться, просто понимаю, что иногда это бывает очень сложно

Alexey
28.09.2017
08:24:16
пф, сто раз видел такой треш
И время на рендерниг сразу улетает в небеса
#index.haml
- users.each do |user|
= render user
#_user.haml
= user.first_name
= user.last_name
Окей, вы меня убедили

Alex
28.09.2017
08:24:56

Alexey
28.09.2017
08:25:04
да

Alex
28.09.2017
08:25:05
тормозная хрень
мне кажется в эту проблему тыкается каждый второй разработчик.

Alexey
28.09.2017
08:25:57
Пока носом не тыкнуть)

Alex
28.09.2017
08:26:15

Alex
28.09.2017
08:26:24
увидишь сразу что страница ДООООООООООООЛГА рисуется

Maksim
28.09.2017
08:26:57
угу =(

Alexey
28.09.2017
08:27:04
Но это еще вершина айсберга, про AR я вообще молчу

Nikolay
28.09.2017
08:27:49

Alex
28.09.2017
08:27:54

Maksim
28.09.2017
08:27:57
есть проблема с тем, что делать с буфером, в который всё рендерится: можно ведь рендерить в преаллоцированный буфер, а можно конкатенировать и делать много реаллокаций

Alexey
28.09.2017
08:27:58
Не всегда

Alex
28.09.2017
08:28:01
если рисуешь циклом партишл - жди лагов

Google

Nikolay
28.09.2017
08:28:02

Alexey
28.09.2017
08:28:08
В цикле рендерить - плохая идея

Maksim
28.09.2017
08:28:10
но это мне кажется фигня по сравнению с блоками

Alex
28.09.2017
08:28:12
если одноразовая вставка то норм

Alexey
28.09.2017
08:28:27
Особенно когда они простые, тк больше уходит на сбор паршиала, чем рендеринг данных

Nikolay
28.09.2017
08:28:37
а если через collection ? когда оно само ищет parial по нейму?
render @products

Alexey
28.09.2017
08:29:04
Там реслов имени
через to_partial_path

Anton
28.09.2017
08:29:11

Admin
ERROR: S client not available

Anton
28.09.2017
08:29:20
вот тогда прямо 10 из 10

Alexey
28.09.2017
08:29:26
:D

Nikolay
28.09.2017
08:29:31

kolas
28.09.2017
08:29:32
а можно как-то инклюд паршиала сделать чтобы он один раз его подгрузил и рендерил?

Alex
28.09.2017
08:29:51
и дальше как обычный партишл

Alexey
28.09.2017
08:30:02
Это быстро

Alex
28.09.2017
08:30:17
Это быстро
ой да ладно, в to_partial_path можно в базу залезть
чтобы прям бомба была.

Google

Nikolay
28.09.2017
08:30:25

Anton
28.09.2017
08:30:34

Nikolay
28.09.2017
08:30:35
это был 3ьего уровня partial
вчера нашёл

Alex
28.09.2017
08:30:48
в консоли же видно что N+1

Anton
28.09.2017
08:31:08
и обязательно в моделе есть какие-то ебанутые колбэки на инициализацию объектов, что бы там была отссылка сообщений по сети

Maksim
28.09.2017
08:31:09
я до сих пор помню восхитительный код на сайте edimdoma.ru, когда дважды из базы вытягивались все те, кто зафрендил главную ведущую

Anton
28.09.2017
08:31:14
что типо я сделял

Maksim
28.09.2017
08:31:20

Anton
28.09.2017
08:31:29
я много говна повидал, кек

Alex
28.09.2017
08:31:42

Alexey
28.09.2017
08:33:02
Да какие колбеки с отправкой сообщения по сети, просто из базы юзеров с топиками достать можно так, что на затылке волосы дрожат
User.all.select { |user| user.topics.any? } ¯\_(ツ)_/¯

Nikolay
28.09.2017
08:33:24
получил to_partial_path
так, а если сложнее
= render @products
products/_product.slim:
div
h1 = product.name
= render partial: ‘products/details’, product.details
это долго или норм?

Alexey
28.09.2017
08:35:14
А ты взгляни на бектрейс сколько времени уходит на рендер этого, потом вытащи и посмотри сколько будет напрямую в цикле. Там сразу в глаза бросается, если разница есть

Nikolay
28.09.2017
08:35:15

Alexey
28.09.2017
08:35:38
?

Nikolay
28.09.2017
08:36:43
жаль я не в Москоу живу

Alexey
28.09.2017
08:37:03
Вы не любите рельсу :)
И я тоже не в Москве

Vasiliy
28.09.2017
08:37:16
никто не любит рельсу
ну судя по чатам