summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/misc/getstringwidth.js26
1 files changed, 26 insertions, 0 deletions
diff --git a/benchmark/misc/getstringwidth.js b/benchmark/misc/getstringwidth.js
new file mode 100644
index 0000000000..12f071c60d
--- /dev/null
+++ b/benchmark/misc/getstringwidth.js
@@ -0,0 +1,26 @@
+'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);
+}