Производительность JS: Switch против IF
Убедимся на примерах в том, что Switch является синтаксическим сахаром к IF. Попытаемся разобраться в разнице между switch и if с точки зрения оптимизаций v8. Таймкоды: 00:00:00 Введение и анекдот 00:01:41 Обсуждение switch и if 00:03:39 Рекомендации по организации кода 00:06:07 Создание тестового кода 00:10:18 Анализ байт-кода 00:12:53 Заключение 00:16:18 Введение в байт-код 00:17:11 Анализ байт-кода для if 00:17:55 Логика байт-кода для if 00:18:45 Оптимизация байт-кода 00:20:29 Регистр аккумулятора 00:25:03 Логика байт-кода для switch 00:28:54 Преимущества switch 00:31:39 Заключение 00:32:53 Оптимизация кода в V8 00:36:25 Опции для генерации оптимизированного кода 00:38:12 Фильтрация функций для оптимизации 00:40:12 Анализ оптимизированного кода 00:42:50 Оптимизация поинтеркомпрессшн 00:45:43 Проверка младшего бита регистра 00:47:16 Проверка на двойку 00:48:39 Представление чисел в двоичном коде 00:49:50 Оптимизация поинтер-компресс 00:51:18 Анализ кода с использованием поинтер-компресс 00:54:32 Сравнение кода для switch и if 01:00:12 Преимущества синтаксиса if перед switch 01:03:14 Пример оптимизации цепочки if 01:04:44 Повторный эксперимент с double 01:06:14 Оптимизация и switch 01:07:29 Деоптимизация и if 01:11:09 Преимущества switch 01:13:50 Оптимизация многократных вызовов 01:16:13 Проблемы множественных return 01:21:28 Оптимизация switch с множественными return 01:22:45 Анализ функции думайн 01:24:12 Оптимизация множественных ретурнов 01:26:00 Преимущества использования switch-case 01:27:34 Сравнение switch-case и if 01:30:40 Гибкость оптимизации if 01:33:36 Оптимизация инлайнинга 01:38:31 Преимущества switch-case для императивного кода 01:39:09 Оптимизация функций в JavaScript 01:40:19 Проблемы с TypeScript 01:41:07 Личный опыт и проекты 01:42:01 Функциональное программирование 01:46:24 Преимущества функционального кода 01:49:49 Анонс будущих стримов 01:50:43 Оптимизация switch 01:54:28 Завершение стрима 01:55:34 Упыри в опросах 01:56:49 Планы на стрим 01:57:15 Завершение опроса и благодарность 01:58:02 Приглашение в Telegram 01:59:06 Благодарность и планы AsForJs новости в Telegram: https://t.me/AsForJavaScript
AsForJs Talks в Telegram: https://t.me/AsForJsTalks
Поддержать маленького бородатого JavaScript-ра Карта Приват (Bobrov Maksym): 5168745021397333 USDT Tron (TRC20): TKoZu59WHiX6L6qvwYTYTsZJerDrnAHBTx USDT etherium (erc20): 0x75fb8a62dfcf453b2e73f1ef1c407d46f918fffa TON: UQAGXvuhxg3qU0eFgOxtdDlKXqdp1zPq6yCRSRbRYQClxOzH bitcoin:bc1q74aru82v4d3alay7p53jdwkmxe4a5gz7fmvfm2?message=AsForJS&time=1686349743 PayPal: demimurych@protonmail.com / demimurych Boosty: https://boosty.to/asforjs
⎡~perf ~7 ~v8 ~switch ~if⎦