{"id":13448419,"url":"https://github.com/alacritty/vtebench","last_synced_at":"2025-10-16T07:54:07.624Z","repository":{"id":27851692,"uuid":"115364558","full_name":"alacritty/vtebench","owner":"alacritty","description":"Generate benchmarks for terminal emulators","archived":false,"fork":false,"pushed_at":"2025-01-09T07:23:53.000Z","size":188,"stargazers_count":356,"open_issues_count":0,"forks_count":22,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-06-04T21:48:40.225Z","etag":null,"topics":["benchmark","rust","terminal","vte"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alacritty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-12-25T21:43:03.000Z","updated_at":"2025-06-01T19:09:18.000Z","dependencies_parsed_at":"2022-07-27T11:02:16.869Z","dependency_job_id":null,"html_url":"https://github.com/alacritty/vtebench","commit_stats":null,"previous_names":["jwilm/vtebench"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/alacritty/vtebench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alacritty%2Fvtebench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alacritty%2Fvtebench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alacritty%2Fvtebench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alacritty%2Fvtebench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alacritty","download_url":"https://codeload.github.com/alacritty/vtebench/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alacritty%2Fvtebench/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259490550,"owners_count":22865768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["benchmark","rust","terminal","vte"],"created_at":"2024-07-31T05:01:45.099Z","updated_at":"2025-10-16T07:54:02.553Z","avatar_url":"https://github.com/alacritty.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# vtebench\n\nA tool for benchmarking terminal emulator PTY read performance.\n\n## Disclaimer\n\nThis benchmark is not sufficient to get a general understanding of the\nperformance of a terminal emulator. It lacks support for critical factors like\nframe rate or latency. The only factor this benchmark stresses is the speed at\nwhich a terminal reads from the PTY. If you do not understand what this means,\nplease do not jump to any conclusions from the results of this benchmark.\n\n## Usage\n\nvtebench accepts benchmarks as executables and uses their stdout as benchmark\npayload. By default benchmarks are read from the `./benchmarks` directory, which\ncontains a good selection of benchmarks already. Benchmarks in vtebench are\ndefined as a directory with a `benchmark` and an optional `setup` executable.\n\nTo just run all the default benchmarks in the repository, you can run the\nfollowing after setting up a Rust toolchain:\n\n```\ncargo run --release\n```\n\n## Plotting\n\nvtebench contains a script for automatically plotting results using `gnuplot`.\nTo do this you first need to output the benchmark results in the `.dat` format:\n\n```\ncargo run --release -- --dat results.dat\n```\n\nAfter having generated the `.dat` file, you can then pass it to a script in the\n`./gnuplot` directory to generate the SVG plot:\n\n```\n./gnuplot/summary.sh results.dat output.svg\n```\n\nYou can combine any number of results by passing them to the gnuplot script:\n\n```\n./gnuplot/summary.sh *.dat output.svg\n```\n\nAnd can plot detailed results using `detailed.sh`:\n\n```\n./gnuplot/detailed.sh *.dat output/\n```\n\n## Contributing Benchmarks\n\nIf you have found benchmarks that might provide insightful information, or show\nsignificant differences between different terminals and version, you can send a\npull request to add them to the default benchmark collection.\n\nTo do so, you just need to create a new directory in the `./benchmarks`\ndirectory and add a `benchmark` and an optional `setup` executable. The stdout\nof the benchmark will automatically be repeated to fill a reasonable minimum\nsample size, so make sure to take that into account and move everything into\n`setup` that should only be done once.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falacritty%2Fvtebench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falacritty%2Fvtebench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falacritty%2Fvtebench/lists"}