'use strict'; const common = require('../common.js'); const bench = common.createBenchmark(main, { type: ['ascii', 'mixed', 'emojiseq', 'fullwidth'], n: [10e4] }, { flags: ['--expose-internals'] }); function main({ n, type }) { const { getStringWidth } = require('internal/readline/utils'); const str = ({ ascii: 'foobar'.repeat(100), mixed: 'foo'.repeat(100) + '๐Ÿ˜€' + 'bar'.repeat(100), emojiseq: '๐Ÿ‘จโ€๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ'.repeat(10), fullwidth: 'ไฝ ๅฅฝ'.repeat(150) })[type]; bench.start(); for (let j = 0; j < n; j += 1) getStringWidth(str); bench.end(n); }