Краткий ответ:
Использование puppeteer.connect()
/ browser.disconnect()
по возможности лучше с точки зрения производительности и в ≈ 146 раз быстрее , чем при использовании puppeteer.launch()
/ browser.close()
(согласно моим тестам производительности).
Подробный ответ:
Я провел несколько тестов, чтобы сравнить производительность вызова puppeteer.connect()
/ browser.disconnect()
против puppeteer.launch()
/ browser.close()
.
Каждый метод был проверен 10 000 раз, а общее время для всех итераций и среднее время для каждой итерации были
Мои тесты показали, что использование puppeteer.connect()
/ browser.disconnect()
примерно в 146 раз быстрее , чем использование puppeteer.launch()
/ browser.close()
.
Вы можете выполнитьтесты на собственной машине с использованием приведенного ниже кода.
Тест (puppeteer.launch()
/ browser.close()
) :
'use strict';
const puppeteer = require( 'puppeteer' );
const { performance } = require( 'perf_hooks' );
const iterations = 10000;
( async () =>
{
let browser;
const start_time = performance.now();
for ( let i = 0; i < iterations; i++ )
{
browser = await puppeteer.launch();
await browser.close();
}
const end_time = performance.now();
const total_time = end_time - start_time;
const average_time = total_time / iterations;
process.stdout.write (
'Total Time:\t' + total_time + ' ms\n'
+ 'Average Time:\t' + average_time + ' ms\n'
+ 'Iterations:\t' + iterations.toLocaleString() + '\n'
);
})();
Результат :
Общее время: 1339075.0866550002 мс
Среднее время: 133,90750866550002 мс
Итерации: 10 000
Тест (puppeteer.connect()
/ browser.disconnect()
) :
'use strict';
const puppeteer = require( 'puppeteer' );
const { performance } = require( 'perf_hooks' );
const iterations = 10000;
( async () =>
{
let browser = await puppeteer.launch();
const browserWSEndpoint = browser.wsEndpoint();
browser.disconnect();
const start_time = performance.now();
for ( let i = 0; i < iterations; i++ )
{
browser = await puppeteer.connect( { browserWSEndpoint } );
browser.disconnect();
}
const end_time = performance.now();
const total_time = end_time - start_time;
const average_time = total_time / iterations;
process.stdout.write (
'Total Time:\t' + total_time + ' ms\n'
+ 'Average Time:\t' + average_time + ' ms\n'
+ 'Iterations:\t' + iterations.toLocaleString() + '\n'
);
process.exit();
})();
Результат :
Общее время: 9198,328596000094мс
среднее время: 0,9198328596000094 мс
итерации: 10 000
Puppeteer Исходный код:
Вы можете посмотреть, что происходит за кулисами, проверив исходный код рассматриваемых функций: