add unicode benchmark

This commit is contained in:
Kovid Goyal
2023-11-12 14:35:53 +05:30
parent 48c0b30671
commit f2153f060d

View File

@@ -23,6 +23,20 @@ var _ = fmt.Print
const reset = "\x1b]\x1b\\\x1bc"
const ascii_printable = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ \n\t `~!@#$%^&*()_+-=[]{}\\|;:'\",<.>/?"
const chinese_lorem_ipsum = `
旦海司有幼雞讀松鼻種比門真目怪少扒裝虎怕您跑綠蝶黃位香法士錯乙音造活羽詞坡村目園尺封鳥朋法松夕點我冬停雪因科對只貓息加黃住蝶明鴨乾春呢風乙時昔孝助小紅女父故去
飯躲裝個哥害共買去隻把氣年己你校跟飛百拉快石牙飽知唱想土人吹象毛吉每浪四又連見欠耍外豆雞秋鼻住步帶
打六申幾麼或皮又荷隻乙犬孝習秋還何氣幾裏活打能花是入海乙山節會種第共後陽沒喜姐三拍弟海肖行知走亮包他字幾的木卜流旦乙左杯根毛
您皮買身苦八手牛目地止哥彩第合麻讀午原朋河乾種果才波久住這香松兄主衣快他玉坐要羽和亭但小山吉也吃耳怕也爪斗斥可害朋許波怎祖葉卜
行花兩耍許車丟學示想百吃門高事不耳見室九星枝買裝枝十新央發旁品丁青給科房火事出出孝肉古北裝愛升幸百東鼻到從會故北可休笑物勿三游細斗娘蛋占犬我羊波雨跳風
牛大燈兆新七馬叫這牙後戶耳荷北吃穿停植身玩間告或西丟再呢他禾七愛干寺服石安他次唱息它坐屋父見這衣發現來苗會開條弓世者吃英定豆哭跳風掃叫美神
寸再了耍休壯植己燈錯和蝶幾欠雞定和愛司紅後弓第樹會金拉快喝夕見往半瓜日邊出讀雞苦歌許開發火院爸乙四帶亮錯鳥洋個讀
`
const misc_unicode = `
«» 😀😛😇😈😉😍😎😮👍👎 §©® ·°±×÷¼½½¾
µ¢£¿¡¨´¸ˆ˜ ÀÁÂÃÄÅÆÇÈÉÊË ÌÍÎÏÐÑÒÓÔÕÖØ ŒŠÙÚÛÜÝŸÞßàá âãäåæçèéêëìí
îïðñòóôõöøœš ùúûüýÿþªºαΩ
`
type benchmark_options struct {
alternate_screen bool
@@ -107,6 +121,15 @@ func simple_ascii() (r result, err error) {
return result{"Only ASCII chars", len(data), duration}, nil
}
func unicode() (r result, err error) {
data := strings.Repeat(chinese_lorem_ipsum+misc_unicode, 64)
duration, err := benchmark_data(data, default_benchmark_options())
if err != nil {
return result{}, err
}
return result{"Unicode chars", len(data), duration}, nil
}
func ascii_with_csi() (r result, err error) {
const sz = 1024 * 1024 * 17
out := make([]byte, 0, sz+48)
@@ -194,7 +217,7 @@ func present_result(r result, col_width int) {
func all_benchamrks() []string {
return []string{
"ascii", "csi", "images", "long_escape_codes",
"ascii", "unicode", "csi", "images", "long_escape_codes",
}
}
@@ -206,7 +229,7 @@ func main(args []string) (err error) {
var r result
// First warm up the terminal by getting it to render all chars so that font rendering
// time is not polluting out benchmarks.
if _, err = benchmark_data(strings.Repeat(ascii_printable, 1024), default_benchmark_options()); err != nil {
if _, err = benchmark_data(strings.Repeat(ascii_printable+chinese_lorem_ipsum+misc_unicode, 2), default_benchmark_options()); err != nil {
return err
}
if slices.Index(args, "ascii") >= 0 {
@@ -216,6 +239,13 @@ func main(args []string) (err error) {
results = append(results, r)
}
if slices.Index(args, "unicode") >= 0 {
if r, err = unicode(); err != nil {
return err
}
results = append(results, r)
}
if slices.Index(args, "csi") >= 0 {
if r, err = ascii_with_csi(); err != nil {
return err