Вставка, доступ и удаление - как архитектура CPU & RAM влияет на производительность

  • Видео
  • О видео
  • Скачать
  • Поделиться

Вставка, доступ и удаление - как архитектура CPU & RAM влияет на производительность

#DevJungles #dotnet #ityoutubers Telegram канал Dev Jungles - https://t.me/DevJungles Поддержать канал можно: - Спонсорством на YouTube - Переводом на карту или пополнением банки монобанка: Dev Jungles YouTube Channel Fund https://send.monobank.ua/jar/7iAP3sZkm9 Номер карты банки: 5375 4112 0230 1466 - Или криптой: BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy ETH - 0x2903f63ba9009732272e91a299053b9d7b623216 USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216 USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2 DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655 AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216 Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd Иногда ваша программа тормозит там, где это казалось бы невозможно. И тут дело может быть в разных причинах, и иногда дело в том, как устроены RAM и CPU, дело в кешах процессора и характере доступа к этой самой памяти. На каких-то умных лекциях кому-то много рассказывали, что есть такая вот модная структура данных как связанный список у которой там чуть ли не все операции за O(1). В .net за эту структуру данных отвечает System.Collections.Generic.LinkedList, только вот когда вы его реально последний раз использовали? Я периодически пробовал, чаще всего это просаживало производительность просто в щи, но было несколько раз, когда он помогал мне выиграть по производительности, а однажды даже по памяти. Еще его, может и не в виде типа LinkedList, а в виде просто реализации структуры данных можно увидеть в сорсах самого dotnet, а его ведь пишут совсем неглупые ребята. В общем буду обо всем этом рассуждать и лайвкодить какие-то примеры. Видео про бенчмаркинг: https://youtu.be/4kH4IFuDJG8 Таймкоды: 0:00 Вводная часть 3:04 Общий вид массива и его хранение в памяти 5:08 Как работает List`T`(сложность операций вставки) 11:11 LinkedList'T' на примере односвязного списка 20:08 LinkedList'T' на примере двусвязного списка 21:50 Бенчмарк 26:58 Запуск бенчмарка на вставку в List'int' vs LinkedList'int' 29:16 Преимущества и недостатки LinkedList 31:00 Анализ результатов бенчмарка 40:02 Бенчмарк для добавления элемента в начало списка и пробега по нему 46:50 Немного о реверсивном Enumerator 50:12 Инструмент Hardware Counters 54:48 Тест списка на примере классов 1:05:27 Обзор коллекции BigList 1:09:18 Случай, когда LinkedList работает быстрее 1:14:14 Бенчмарк для BigList 1:20:18 Получаем Out of Memory Exception 1:29:33 Проверяем расходы памяти с помощью DotMemory 1:34:17 Как выглядит в оперативной памяти LinkedList и BigList 1:41:33 Применение LinkedList в исходниках .NET 1:48:42 Итоги, выводы
3, 472   |   4 год. назад  |   246 - 0
 

Вставка, доступ и удаление - как архитектура CPU & RAM влияет на производительность

Скачайте изображение (превью) выбрав качество


320x180 480x360 640x480 1280x720

#DevJungles #dotnet #ityoutubers

Telegram канал Dev Jungles -

Поддержать канал можно:
- Спонсорством на YouTube
- Переводом на карту или пополнением банки монобанка:
Dev Jungles YouTube Channel Fund


Номер карты банки:
5375 4112 0230 1466

- Или криптой:
BTC - 18C3jsFYwviN5FvzpAt4uMWRfUeVKvdWxy
ETH - 0x2903f63ba9009732272e91a299053b9d7b623216

USDT on ERC20 - 0x2903f63ba9009732272e91a299053b9d7b623216
USDT on TRC20 - TSmS5RzQKbWdxZkoM2oRo9HK8FYBaq744T

LTC - LN3CkrnvZLZTXDUhqTy1gUKMVpLjEPA4G2

DOGE - DPwon439jf3axVSBwyuXso6z7CivuJF655
AAVE - 0x2903f63ba9009732272e91a299053b9d7b623216
Waves - 3P8D57Zw7CrqW2o7dHpvZR2UzAzQRFA2kZd

Иногда ваша программа тормозит там, где это казалось бы невозможно. И тут дело может быть в разных причинах, и иногда дело в том, как устроены RAM и CPU, дело в кешах процессора и характере доступа к этой самой памяти.

На каких-то умных лекциях кому-то много рассказывали, что есть такая вот модная структура данных как связанный список у которой там чуть ли не все операции за O(1).
В .net за эту структуру данных отвечает System.Collections.Generic.LinkedList, только вот когда вы его реально последний раз использовали? Я периодически пробовал, чаще всего это просаживало производительность просто в щи, но было несколько раз, когда он помогал мне выиграть по производительности, а однажды даже по памяти.
Еще его, может и не в виде типа LinkedList, а в виде просто реализации структуры данных можно увидеть в сорсах самого dotnet, а его ведь пишут совсем неглупые ребята.

В общем буду обо всем этом рассуждать и лайвкодить какие-то примеры.

Видео про бенчмаркинг:

Таймкоды:
0:00 Вводная часть
3:04 Общий вид массива и его хранение в памяти
5:08 Как работает List`T`(сложность операций вставки)
11:11 LinkedList'T' на примере односвязного списка
20:08 LinkedList'T' на примере двусвязного списка
21:50 Бенчмарк
26:58 Запуск бенчмарка на вставку в List'int' vs LinkedList'int'
29:16 Преимущества и недостатки LinkedList
31:00 Анализ результатов бенчмарка
40:02 Бенчмарк для добавления элемента в начало списка и пробега по нему
46:50 Немного о реверсивном Enumerator
50:12 Инструмент Hardware Counters
54:48 Тест списка на примере классов
1:05:27 Обзор коллекции BigList
1:09:18 Случай, когда LinkedList работает быстрее
1:14:14 Бенчмарк для BigList
1:20:18 Получаем Out of Memory Exception
1:29:33 Проверяем расходы памяти с помощью DotMemory
1:34:17 Как выглядит в оперативной памяти LinkedList и BigList
1:41:33 Применение LinkedList в исходниках .NET
1:48:42 Итоги, выводы


Вставка, доступ и удаление - как архитектура CPU & RAM влияет на производительность

Чтобы скачать видео "Вставка, доступ и удаление - как архитектура CPU & RAM влияет на производительность" передвинте ползунок вправо



Покажите вашим друзьям, добавьте в соцсети

Ссылка на страницу с видео:

 

Ссылка HTML на страницу с видео:

 

Код для вставки плеера:


  • Комментарии

Комментарии ФБ


Уважаемые друзья!

Источником всего видеоконтента, в том числе проигрывающегося на страницах ресурса ruslar.me, является сторонний видео ресурс, а именно общедоступный видеохостинг YouTube.com, предоставляющий открытый доступ к своему видеоконтенту (используя открытую и общедоступную технологию video API3 youtube.com)!

Проблемы с авторскими правами

Если вам принадлежат авторские права на данное видео, которое было загружено без вашего согласия на YouTube.com, перейдите на страницу этого видео сайта YouTube.com , нажмите на ссылку под проигрывателем Ещё -> "Пожаловаться" -> "Нарушение моих прав" и в выпадающем меню, выбирите, что именно нарушается и нажмите кнопку "Отправить".



Неприемлемый контент

Чтобы сообщить о неприемлемом видео, перейдите на YouTube, нажмите на ссылку под проигрывателем Ещё -> "Пожаловаться" и выберите в "Сообщить о нарушении" что именно вас не устраивает в этом видео. Подробнее о наших правилах читайте в Условиях использования.