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

Просмотров: 3, 393   |   Загружено: 3 год.
icon
Dev Jungles - Andrii Podkolzin
icon
244
icon
Скачать
iconПодробнее о видео
#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 Итоги, выводы

Похожие видео

Добавлено: 55 год.
Добавил:
  © 2019-2021
  Вставка, доступ и удаление - как архитектура CPU & RAM влияет на производительность - RusLar.Me