О насБлогКонтакты
Веб-разработка10 ноября 2008 г. 4 мин 99Обновлено: 22 июня 2026 г.

Google Chrome и V8: JavaScript ускорился в 10 раз (2008)

AunimedaAunimeda
📋 Содержание

2 сентября 2008 года Google выпустил Chrome. Вместе с браузером - 38-страничный комикс от Scott McCloud с объяснением архитектурных решений. Google объяснял браузер через комикс. Это говорило о многом.

V8 - JavaScript-движок Chrome - был написан с нуля командой Lars Bak из Дании. Те же люди строили JIT-компиляторы для Smalltalk и Java в 90-х.

Firefox 3 на SunSpider benchmark: 3800мс. Chrome beta: 380мс. Тот же код, та же машина, в десять раз быстрее.

Казахстанские разработчики следили за этим через блоги и Хабрахабр. Числа казались нереальными.


V8: JIT-компиляция в деталях

// Почему V8 быстрее? Компиляция в машинный код при первом выполнении.
// Firefox 3 (SpiderMonkey) интерпретировал байткод.
// V8 генерировал нативный код под конкретный процессор.

// Hidden Classes - ключевая оптимизация V8:

// Стандартный паттерн создания объектов:
function Product(name, price, stock) {
    this.name  = name;
    this.price = price;
    this.stock = stock;
}

var p1 = new Product('Телефон', 50000, 10);
var p2 = new Product('Планшет', 80000, 5);
// p1 и p2 разделяют Hidden Class C3: {name, price, stock}
// Доступ к свойствам = фиксированный offset в памяти → C++-скорость

// Антипаттерн - разрушает оптимизацию:
var p3 = new Product('Ноутбук', 150000, 3);
p3.discount = 10;  // Новый Hidden Class для p3 - деоптимизация
// V8 не может инлайнить доступ к p3.price так же эффективно

// Практическое правило для 2008 года:
// Создавайте все свойства объекта в конструкторе, в одном порядке.
// Не добавляйте свойства динамически после создания.

// Benchmark для наглядности:
function fibonacci(n) {
    if (n <= 1) return n;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

// Firefox 3: ~2500мс для fibonacci(40)
// Chrome beta: ~240мс для fibonacci(40)

Гонка браузеров: реакция на V8

// SunSpider 0.9 - стандарт 2008-2010

// Результаты конец 2008:
// IE 7:       ~5700мс  - Microsoft не имел JIT
// Firefox 3:  ~3800мс  - SpiderMonkey, интерпретатор
// Safari 3:   ~1700мс  - JavaScriptCore, без JIT
// Opera 9.6:  ~1900мс  - Carakan (JIT) ещё не вышел
// Chrome 0.2: ~380мс   - V8, JIT с первого дня

// Реакция индустрии за 12 месяцев:
// Firefox 3.5 (июнь 2009): TraceMonkey JIT → 1036мс (-73%)
// Safari 4 (февраль 2009): Squirrelfish Extreme → 396мс (-77%)
// Opera 10 (сентябрь 2009): Carakan JIT → ~400мс
// IE 8 (март 2009): нет JIT → 4700мс (всё ещё отстаёт)

// Итог: к концу 2009 браузеры были в 3-8 раз быстрее чем год назад.
// JavaScript стал достаточно быстрым для сложных клиентских приложений.

Process-per-tab: изоляция вкладок

Chrome 2008: каждая вкладка = отдельный процесс ОС

Для разработчиков-пользователей Казнета это означало:
- Зависшая вкладка не убивала браузер
- Вкладки не делили память

Для разработчиков-программистов:
- Нельзя рассчитывать на глобальное состояние браузера
- Каждая вкладка = изолированный JS heap

До Chrome: если один сайт вешал JavaScript → браузер висел весь.
После Chrome: только эта вкладка. Остальные работают.

Это сделало web-приложения значительно надёжнее в восприятии пользователей.

DevTools: профайлер для казахстанских разработчиков

// Chrome DevTools 2008 - инструменты разработчика нового уровня

// CPU Profiler показывал где тратится время:
// Раньше: console.time() / console.timeEnd() вручную везде

// Типичная находка профайлера:
// Казахстанский каталог товаров - медленный рендеринг

// Проблема (не видна без профайлера):
function renderCatalog(products) {
    for (var i = 0; i < products.length; i++) {
        var div = document.createElement('div');
        div.className = 'product-card';
        div.innerHTML = '<h3>' + products[i].name + '</h3>';
        document.getElementById('catalog').appendChild(div);
        // reflow на КАЖДОЙ итерации - 100 товаров = 100 reflow
    }
}

// Решение (находится за 5 минут с профайлером):
function renderCatalogFast(products) {
    var frag = document.createDocumentFragment();
    for (var i = 0; i < products.length; i++) {
        var div = document.createElement('div');
        div.className = 'product-card';
        div.innerHTML = '<h3>' + products[i].name + '</h3>';
        frag.appendChild(div); // нет reflow
    }
    document.getElementById('catalog').appendChild(frag); // один reflow
    // Результат: 100 товаров рендерятся в 10x быстрее
}

Chrome в Казахстане: 2008-2010

В Казахстане Chrome распространился быстро среди технически грамотных пользователей. IE 6 и 7 оставались доминирующими в корпоративном секторе (обновления заблокированы IT-политиками), но в молодёжной и технической аудитории - Chrome занял долю за 1-2 года.

К 2010 году казахстанские разработчики должны были тестировать в Chrome, Firefox, IE 7/8, а также Safari и Opera (значительная доля пользователей).

Chrome изменил что было возможным: сложные веб-приложения, которые раньше были медленными, стали быстрыми. Google Docs, сложные дашборды, real-time обновления - всё это стало реалистичным для Казнета.

Читайте также

Node.js vs Bun vs Deno 2026: бенчмарки и выбор runtime для продакшнaunimeda
Веб-разработка

Node.js vs Bun vs Deno 2026: бенчмарки и выбор runtime для продакшн

Bun 1.x стабилен в production. Deno 2.0 поддерживает npm-пакеты. Node.js 22 запускает TypeScript нативно. Реальные бенчмарки производительности, сравнение инструментов и конкретные рекомендации для казахстанских разработчиков.

Node.js: JavaScript вышел на сервер (2009)aunimeda
Веб-разработка

Node.js: JavaScript вышел на сервер (2009)

8 ноября 2009 года Райан Даль представил Node.js на JSConf EU. Веб-сервер в 10 строк, 10 000 одновременных соединений без потоков. V8 на сервере. Для казахстанских разработчиков, работавших с PHP+Apache, это был совершенно другой способ думать о сервере.

iPhone и мобильный веб: новые правила (2007)aunimeda
Веб-разработка

iPhone и мобильный веб: новые правила (2007)

29 июня 2007 года Apple выпустила iPhone с настоящим браузером Safari. Пользователи впервые ожидали реальные сайты на мобильном. Казахстанские разработчики столкнулись с viewport meta, touch-событиями и вопросом: как оптимизировать сайт под экран 320px?

Нужна IT-разработка для вашего бизнеса?

Разрабатываем сайты, мобильные приложения и AI-решения для бизнеса в Казахстане. Бесплатная консультация.

Разработка сайтов

Получить консультацию Все статьи