Press "Enter" to skip to content

Adding Concurrency to our Web App — Go Lang Practical Programming Tutorial p.24


что происходит на всем добро пожаловать
часть 24 нашего языкового программирования
учебник в этом учебнике, что
мы пытаемся сделать, это применить то, что
мы учились до этого момента
с каналами и подпрограммами
параллелизм в целом для нашего веб-приложения для
посмотрим, можем ли мы сделать это немного
быстрее, потому что сейчас это довольно
медленно, так что я сделал, я просто добрый
пробега , что мы до этого момента и
если вы нажмете f12 в Google Chrome, вы
я запомнил
вы называете это , но в любом случае вы будете
получить эту вещь , если вы можете прийти
давайте посмотрим на производительность здесь, а затем идем
вперед и просто нажмите эту кнопку
профилирование и перезагрузка этой страницы ждут
это и в целом это больше похоже на
внешний вид, но мы можем на самом деле
используйте его вовремя назад, чтобы здесь
мы можем видеть, что все это
на самом деле заняло очень много времени, я не
думаю, это на самом деле, как долго
обычно, но мы можем сделать то, что мы
может обрезать эту часть, и мы можем видеть в
В одиночку мы провели четыре тысячи
двести двадцать три пункта пять
миллисекунды Я собираюсь пойти и запустить
это еще один раз , хотя , потому что я чувствую
так было на самом деле больше, чем мы
обычно трачу, поэтому я не уверен
если это была случайность или что, но идея
заключается в том, что это простое время
что браузер тратит в основном
ничего, потому что он ждет, так что
времени тридцать восемь сорок пять
в любом случае, что в режиме ожидания позвольте мне запустить его
больше времени, пока я просто объясняю, это
время, которое браузер потратил на
запрашивать и затем он просто ждет для
ответ, так что просто чистое время простоя
браузером и причина, по которой мы
с этим простоем, потому что наша сеть
сервер каждый раз, когда мы смотрим любовь, как это
число постоянно уменьшается каждый раз
в любом случае каждый раз, когда мы посещаем эту косую черту
AGG переписывает все
информация со всех карт сайта, поэтому
каждый раз, когда мы его тянем, он собирается делать все
этот код снова, и именно поэтому у нас есть
этот простой, но все же отбрасывающий это
действительно разочаровываю, я хотел бы видеть
просто статичный
по крайней мере, всякий раз, когда я тестировал это
было около 2800 до 3300 так что надеюсь , это
не упадет дальше, да, хорошо, так
отлично, давайте скажем прямо сейчас, мы
работает около 30 153 миллисекунд, поэтому
просто помните, что мы вернемся и
мы снова запустимся
с на другую вкладку , а затем мы можем вид
сравнить их, и мы сделали это так сейчас
давайте применим все, что имеем
выучили до этого момента, чтобы сделать это
вы должны просто пригодиться, если не будете
перейдите к текстовой версии этого
У меня есть все стартовые скрипты
что вам нужно будет следовать, но вы
должен иметь этот учебник только от одного
учебник перейдите к предыдущему учебнику
должна иметь последнюю версию нашего
агрегатор новостей все готов сожалеть
это не совсем до стандартов снова запустить
идти, если вы, если вам это нравится, а затем
очевидно, что HTML хорошо, так что я
собираюсь сделать, я просто собираюсь начать
изменение этого нового zag пойти на использование go
подпрограмм каналов и синхронизации
первое, что мы собираемся пойти
впереди, и сделаем, давайте продолжим и
импортировать синхронизацию, а затем давайте определим нашу
вы знаете, что группа WG sync dot wait
и теперь мы собираемся войти
в основном это основная функция
что мы имеем дело с таким
что я забыл сделать, это закрыть нашу
так что в какой-то момент вы
просто хочу закрыть это, так что остановка ответа
body close close Я забыл сделать это
один из зрителей был как эй, как прийти
ты больше этого не делаешь , потому что я
было глупо так поэтому убедитесь , что вы
закройте это Я не буду беспокоиться об этом
один пока, потому что мы собираемся изменить
некоторые вещи здесь, но я имею в виду действительно вас
не стоит закрывать его здесь
а так ответ не тело не близко I
думаю, я сделаю это
мы собираемся переместить весь этот код, чтобы
почему мне все равно, но так или иначе
теперь внутри нашего агрегатора новостей
обработчик в основном мы хотим
мы разделим эти два
вещи, но на данный момент в основном наши идут
рутинная вещь, которую мы хотим распространять
в основном это код здесь код
который захватывает ответ кодом, который
безмоментный Xin к нашей конечной переменной и
то, очевидно, закрыть ответ, который
код, который нам нужно запустить как хороший
но и как канал для возврата
ценности, которые мы являемся Маршаллом в нашем
n переменная здесь, так что я собираюсь сделать это
мы создадим новую функцию, и я
думаю, я скажу, что я просто прав
вот так мы собираемся назвать эту новость
рутины, и пока мы собираемся
определенно необходимо передать местоположение
тип строки, если мы собираемся имитировать
эта функция полностью, так что сначала мы
просто пытается имитировать функцию и
то мы преобразуем его в фактический
канал в полном объеме, так что я собираюсь идти вперед
и мы возьмем все это здесь, и мы
просто вырежьте его , придет сюда паста и
позвольте мне просто перечислить это, если вы находитесь в
возвышенное должно быть контролем открытия
квадратные скобки, которые должны исправить это хорошо
но у нас будет проблема , которую мы
распаковать в этой новости значение теперь вы
может передать объект новостей в основном
через функцию есть пара
причин , почему вы не хотели бы сделать
когда мы делаем это одновременно, но
в основном мы собираемся возвращать эти
значения как часть канала, поэтому
вместо того, что мы собираемся делать на самом деле
мы просто собираемся взять информацию о баре
отсюда cut придумайте здесь паста сделано
то, что мы хотим сделать, мы можем прийти
здесь, и мы могли бы просто сказать, иди и
затем мы запускаем рутину новостей, так что отправляй новости
и затем мы передаем местоположение сейчас
Конечно, часть проблемы — это не
действительно канал, поэтому нам нужно
сначала нам нужно создать канал, чтобы
давайте продолжим и сделаем так, как это называется Q
и это будет в состоянии сделать
мы собираемся сделать канал новостей
типа, а затем для буфера мы просто
скажем, как 30 Я имею в виду, что ты можешь положить что-нибудь
он просто должен быть больше , чем
сумму , которую вы собираетесь использовать
вы могли бы сказать 500 или что-то, что я просто
собираюсь поставить 30, это совершенно интересно, так что
это будет наш канал, поэтому
канал, который мы собираемся передать
наша наша новостная программа будет
в основном, что мы будем делать, это будет C
Chan news capital N, а затем мы здесь
собираюсь пройти Q в качестве канала для этого
рутина теперь другое, что нам нужно
чтобы сделать это , мы должны фактически поставить
значения на канале внутри этого товара
рутина, которая подходит к новостной рутине
в основном канал использует канал
оператора, а затем закончите так, что мы собираемся
отправьте значение и до
канал хорошо, поэтому, как только мы получим
в основном каждая ценность, поэтому у нас будет
количество этих типов новостей, которые
были распакованы в n, поэтому мы в основном
У меня есть несколько типов новостей
и затем мы перебираем эти новости
типы, поэтому так обращаться для этого, что
мы будем делать в основном мы хотим
возьмите, в основном, мы возьмем это
потому что это собирается отправить его на
правый канал, а затем
здесь мы собираемся это сделать
итерация по N, ключевые слова и прочее
но у нас нет единственного конца
у нас есть целая группа целей и
это скопление концов приходит над
канал, поэтому нам нужно итерации
по каналу, и тогда у нас есть это
этот тип новостей в основном так для итерации
по каналу мы уже знаем , как
сделайте это так, как четвертая клетка
равный диапазон по каналу Q и в
факт, позвольте мне просто
вырезать это придет, Элам это будет и
вы знаете тип новостей, так что теперь давайте просто
возьмите это и замените n на Elam
элемент в порядке, поэтому у нас так получилось
мы фактически повторяем эти новости
карты, населяющие карты новостей
так в значительной степени равно все в
Основное различие здесь скорее
чем один тип новостей, который мы собираемся
перебирать все, что
ценности у нас будет куча этих
типы новостей, и поэтому нам нужно итератировать
над теми, потому что каждый сам по себе
маленький канал в основном так теперь, что мы
необходимо сделать ручку для
синхронизации, поэтому мы уже получили
наша весовая группа здесь, так что единственная
нам нужно сделать еще одно:
как мы итерируем вокруг, нам нужно подождать
группе добавить один хорошо, мы также должны после
это для цикла, нам нужно ждать группу
подождите, но как только мы закончим, мы
нужно закрыть очереди , а затем нам нужно
отложить отложенную группу ожидания досрочно
группа ожидания, сделанная в реальных новостях
сама по себе я думаю, что это все
Думаю, я просто считаю себя счастливым
если это все будет так
Я уверен, что что-то пропущу, но пойдем
впереди, и я нарушил текущую новость AG
давайте продолжим и снова запустим новость AG
перейти к строке 12 после верхнего уровня
строка декларации двенадцать, так что здесь
О , я вижу , так это просто , это раковина сверху
весовой тип группы давайте попробуем это снова
за исключением того, что я пришел сюда
как функция в порядке, я позволю ей
так что приходите сюда, давайте обновим и
давайте откроем инструменты для разработчиков так
это старый, я просто пошел вперед
и оставил его, а потом я просто отчасти
обрезать, убедитесь, что у нас нет
добавлено время простоя, и тогда это наш новый
один, поэтому позвольте мне просто обновить в первую очередь
очень быстро, как вы можете видеть, когда мы
обновить, я имею в виду, что там есть данные
почти мгновенно по сравнению с предыдущим
в любом случае, но давайте фактически получим реальную
время от ожидания ждут, все остальное хорошо, так что
Я имею в виду, что вы можете сказать прямо из
Ворота это определенно собирается быть короче
чем другой
поэтому на этот раз наше простое 454
миллисекунды по сравнению с прежде , чем где
у нас было 30 162, так что огромная разница
по сравнению с тем раньше, так что да, это больше
чем в шесть раз быстрее, поэтому все, что мы сделали
чтобы эта игра просто использовала
подпрограммы с каналами, и это все
действительно так здорово, что мы смогли
сейчас сократилось совсем немного 454
миллисекундное время ответа еще не
все, что мы обязательно хотим написать
домой о нескольких вещах только для
рассмотрим, например, некоторые из
на этот раз будет Вашингтон
Пост право вина
например, как долго
время ответа, когда мы запрашиваем фактическое
как фактический индекс карты сайта
что это такое время отклика , а затем и
какое время ответа для самого медленного
sitemap в списке так, по крайней мере, когда я
проверил, что это примерно как 70
миллисекундное время отклика для
индекс карты сайта и, по крайней мере, один из
sitemaps Я проверил, поэтому я бы сказал, что вы
знай, что ты сможешь обрезать
скажем, 150 миллисекунд, оставляя нас с
около 300 миллисекунд, которые составляют часы
что нам нужно выяснить, что делать
с одной вещью, которую мы могли бы сделать, является
а не как мы могли бы просто на месте
мы могли бы сделать эту часть
мы могли бы загрузить, как это, карту сайта
индексную информацию, которую мы могли бы реально сделать
это за пределами новости картежник
скорее всего, они не собираются добавлять новые
карту сайта так часто, как они собираются получить
новые данные, поэтому мы хотим загрузить новые данные
для пользователя в основном каждый раз, когда они
доступ к этой странице, потому что новые новости
выходить постоянно
но как часто это новая карта сайта
выйдет, вероятно, не очень
часто правы, это немного
другой, но, честно говоря, я имею в виду, что я
reload и bam Я имею в виду данные там
как мгновенно по сравнению с
прежде чем я удивлюсь
на самом деле 300 миллисекунд кажется
быстрее, чем это для меня, но я не думаю, что
Я все равно не знаю, сколько данных
также я имею в виду другие вещи, которые мы
продолжаются, как большие прибыли
что мы могли бы сделать здесь
вероятно , не больше в нашем коде go
что на самом деле больше , чтобы сделать с видом
интерфейсный веб-дизайн, который, как мне кажется
может быть наш код go, например, как
этот стол, даже если он имеет
pagination это как мгновенное право
потому что все данные на самом деле там
если мы должны были просмотреть исходный код , все из
данные таблицы есть правильно, и именно поэтому
поиск такой приятный и быстрый
потому что данные уже там
просто используя какой-то JavaScript и все.
так что, чтобы ускорить это, одна из вещей
что мы можем сделать в теории, это то, что мы
может понравиться, если мы прокрутим это через мой
голова в пути, но да, чтобы ты мог
см. большую часть времени, проведенного здесь, на
рендеринг там какой- то плоскости
летающий над которым в основном для этого
и в основном потому, что у нас так много
информации, поэтому одна вещь, которую мы можем сделать, — это
добавить реальную разбивку на страницы или что-то еще, а не
на самом деле вы знаете 1400 записей в
любое заданное время передается, потому что
это много информации, которую мы имеем
название у нас есть URL-данные и
то все данные ключевого слова, которые
передан и показан на этой странице, который просто
просто занимает много времени, что
много вещей, так или иначе, по крайней мере, для
теперь это огромное улучшение по сравнению с нашими
Предыдущий код у нас есть все работает
гораздо намного быстрее, чем круто
если у вас есть какие-либо вопросы
независимо от того, что вы можете оставить их ниже
если у вас есть и
движения все , что вы можете думать о
чтобы ускорить это,
быстрее поделитесь с нами в противном случае это
все на данный момент надеюсь, что вы, ребята, понравились
серия призраков, и я увижу вас, ребята
в другом учебнике
Please follow and like us:

Be First to Comment

Добавить комментарий