Bashkit v0.17.1 vs v0.9.0
vm-linux-x86_64 · 4 CPUs · 2026-09-02 18:40 UTC · in-process runner · 96 cases × 3 alternating rounds × 30 iterations (warmup 5), both versions on the same machine
Geometric mean speedup, v0.17.1 over v0.9.0
1.02×
median 0.98×
Total time, all cases
47.3 ms
was 40.9 ms (0.87×)
Cases faster / slower
2 / 7
87 within noise
Errors
0 / 0
v0.17.1 / v0.9.0
Change by category
Geometric mean of per-case ratio (v0.9.0 mean ÷ v0.17.1 mean), log scale. Right of the line is faster now. Hover for totals.
v0.17.1 fasterv0.17.1 slower
Largest improvements
tool_jq_maptools · 1.46× (1.011 → 0.694 ms)tool_sed_backrefstools · 1.44× (0.311 → 0.215 ms)
Largest regressions
large_string_append_100large · 0.77× (0.286 → 0.372 ms)io_read_linesio · 0.79× (0.088 → 0.111 ms)large_multiline_scriptlarge · 0.82× (0.368 → 0.451 ms)large_function_calls_500large · 0.83× (5.483 → 6.590 ms)large_pipeline_chainlarge · 0.84× (0.902 → 1.071 ms)
All cases
Ratio > 1 means v0.17.1 is faster. Times are the median of three alternating rounds of 30 iterations each (±: pooled stddev over all 90 samples). Rows in gray are within noise: under 10% change, or the per-round means of the two versions overlap.
| Case | v0.9.0 (ms) | v0.17.1 (ms) | Ratio | Change | slower ◂ ▸ faster |
|---|---|---|---|---|---|
| startup | |||||
| startup_empty | 0.043 ±0.021 | 0.048 ±0.016 | 0.89× | -12% | |
| startup_true | 0.038 ±0.017 | 0.043 ±0.011 | 0.88× | -13% | |
| startup_echo | 0.041 ±0.016 | 0.048 ±0.020 | 0.85× | -17% | |
| startup_exit | 0.052 ±0.022 | 0.045 ±0.014 | 1.15× | +15% | |
| variables | |||||
| var_assign_simple | 0.064 ±0.017 | 0.055 ±0.013 | 1.16× | +16% | |
| var_assign_many | 0.087 ±0.020 | 0.079 ±0.018 | 1.10× | +10% | |
| var_default | 0.068 ±0.024 | 0.053 ±0.013 | 1.30× | +30% | |
| var_length | 0.067 ±0.020 | 0.056 ±0.017 | 1.20× | +20% | |
| var_substring | 0.062 ±0.017 | 0.054 ±0.022 | 1.16× | +16% | |
| var_replace | 0.044 ±0.020 | 0.060 ±0.022 | 0.74× | -35% | |
| var_nested | 0.049 ±0.017 | 0.056 ±0.021 | 0.88× | -13% | |
| var_export | 0.050 ±0.025 | 0.052 ±0.010 | 0.96× | -4% | |
| arithmetic | |||||
| arith_basic | 0.046 ±0.029 | 0.046 ±0.016 | 0.99× | -1% | |
| arith_complex | 0.045 ±0.018 | 0.053 ±0.012 | 0.85× | -18% | |
| arith_variables | 0.051 ±0.024 | 0.053 ±0.017 | 0.96× | -4% | |
| arith_increment | 0.045 ±0.021 | 0.053 ±0.012 | 0.85× | -18% | |
| arith_modulo | 0.040 ±0.018 | 0.051 ±0.017 | 0.80× | -25% | |
| arith_loop_sum | 0.087 ±0.039 | 0.115 ±0.027 | 0.76× | -32% | |
| control | |||||
| ctrl_if_simple | 0.047 ±0.022 | 0.057 ±0.015 | 0.82× | -22% | |
| ctrl_if_else | 0.071 ±0.019 | 0.052 ±0.015 | 1.38× | +38% | |
| ctrl_for_list | 0.100 ±0.030 | 0.072 ±0.017 | 1.39× | +39% | |
| ctrl_for_range | 0.109 ±0.031 | 0.078 ±0.028 | 1.40× | +40% | |
| ctrl_while | 0.149 ±0.042 | 0.118 ±0.024 | 1.26× | +26% | |
| ctrl_case | 0.079 ±0.031 | 0.057 ±0.016 | 1.39× | +39% | |
| ctrl_function | 0.079 ±0.024 | 0.055 ±0.015 | 1.43× | +43% | |
| ctrl_function_return | 0.098 ±0.027 | 0.071 ±0.013 | 1.38× | +38% | |
| ctrl_nested_loops | 0.126 ±0.030 | 0.096 ±0.020 | 1.32× | +32% | |
| strings | |||||
| str_concat | 0.071 ±0.021 | 0.055 ±0.020 | 1.29× | +29% | |
| str_printf | 0.055 ±0.020 | 0.050 ±0.014 | 1.09× | +9% | |
| str_printf_pad | 0.055 ±0.017 | 0.051 ±0.014 | 1.09× | +9% | |
| str_echo_escape | 0.045 ±0.021 | 0.043 ±0.014 | 1.05× | +5% | |
| str_prefix_strip | 0.044 ±0.017 | 0.049 ±0.010 | 0.90× | -11% | |
| str_suffix_strip | 0.047 ±0.017 | 0.052 ±0.017 | 0.90× | -11% | |
| str_uppercase | 0.045 ±0.020 | 0.051 ±0.014 | 0.88× | -13% | |
| str_lowercase | 0.043 ±0.019 | 0.048 ±0.012 | 0.90× | -11% | |
| arrays | |||||
| arr_create | 0.047 ±0.023 | 0.051 ±0.013 | 0.91× | -10% | |
| arr_all | 0.052 ±0.021 | 0.049 ±0.009 | 1.07× | +7% | |
| arr_length | 0.046 ±0.015 | 0.051 ±0.014 | 0.90× | -12% | |
| arr_iterate | 0.063 ±0.022 | 0.062 ±0.015 | 1.00× | +0% | |
| arr_slice | 0.058 ±0.019 | 0.051 ±0.011 | 1.13× | +13% | |
| arr_assign_index | 0.045 ±0.018 | 0.049 ±0.011 | 0.92× | -9% | |
| pipes | |||||
| pipe_simple | 0.077 ±0.022 | 0.064 ±0.014 | 1.21× | +21% | |
| pipe_multi | 0.087 ±0.034 | 0.096 ±0.037 | 0.91× | -10% | |
| pipe_command_subst | 0.049 ±0.018 | 0.056 ±0.011 | 0.88× | -14% | |
| pipe_heredoc | 0.060 ±0.021 | 0.059 ±0.013 | 1.01× | +1% | |
| pipe_herestring | 0.073 ±0.021 | 0.059 ±0.014 | 1.25× | +25% | |
| pipe_discard | 0.055 ±0.013 | 0.054 ±0.009 | 1.01× | +1% | |
| tools | |||||
| tool_grep_simple | 0.076 ±0.020 | 0.058 ±0.014 | 1.30× | +30% | |
| tool_grep_case | 0.279 ±0.065 | 0.180 ±0.029 | 1.55× | +55% | |
| tool_grep_count | 0.074 ±0.020 | 0.057 ±0.012 | 1.29× | +29% | |
| tool_grep_invert | 0.074 ±0.025 | 0.060 ±0.016 | 1.22× | +22% | |
| tool_grep_regex | 0.109 ±0.034 | 0.087 ±0.017 | 1.26× | +26% | |
| tool_sed_replace | 0.220 ±0.051 | 0.160 ±0.040 | 1.37× | +37% | |
| tool_sed_global | 0.214 ±0.046 | 0.148 ±0.040 | 1.44× | +44% | |
| tool_sed_delete | 0.076 ±0.020 | 0.057 ±0.015 | 1.32× | +32% | |
| tool_sed_lines | 0.074 ±0.029 | 0.053 ±0.013 | 1.39× | +39% | |
| tool_sed_backrefs | 0.311 ±0.083 | 0.215 ±0.038 | 1.44× | +44% | |
| tool_awk_print | 0.049 ±0.016 | 0.057 ±0.012 | 0.86× | -16% | |
| tool_awk_sum | 0.064 ±0.019 | 0.064 ±0.020 | 1.00× | +0% | |
| tool_awk_pattern | 0.092 ±0.027 | 0.091 ±0.023 | 1.01× | +1% | |
| tool_awk_fieldsep | 0.060 ±0.015 | 0.056 ±0.011 | 1.07× | +7% | |
| tool_awk_nf | 0.062 ±0.019 | 0.061 ±0.021 | 1.00× | +0% | |
| tool_awk_compute | 0.066 ±0.022 | 0.058 ±0.014 | 1.13× | +13% | |
| tool_jq_identity | 0.672 ±0.180 | 0.703 ±0.085 | 0.95× | -5% | |
| tool_jq_field | 0.714 ±0.173 | 0.760 ±0.107 | 0.94× | -7% | |
| tool_jq_array | 0.726 ±0.170 | 0.690 ±0.072 | 1.05× | +5% | |
| tool_jq_filter | 0.675 ±0.190 | 0.740 ±0.082 | 0.91× | -10% | |
| tool_jq_map | 1.011 ±0.160 | 0.694 ±0.107 | 1.46× | +46% | |
| complex | |||||
| complex_fibonacci | 4.926 ±1.449 | 5.805 ±1.093 | 0.85× | -18% | |
| complex_fibonacci_iter | 0.115 ±0.047 | 0.124 ±0.041 | 0.92× | -8% | |
| complex_nested_subst | 0.054 ±0.025 | 0.065 ±0.025 | 0.84× | -19% | |
| complex_loop_compute | 0.106 ±0.043 | 0.173 ±0.044 | 0.61× | -63% | |
| complex_string_build | 0.053 ±0.019 | 0.064 ±0.017 | 0.82× | -21% | |
| complex_json_transform | 0.699 ±0.183 | 0.718 ±0.148 | 0.97× | -3% | |
| complex_pipeline_text | 0.181 ±0.059 | 0.180 ±0.029 | 1.01× | +1% | |
| large | |||||
| large_loop_1000 | 3.906 ±1.378 | 4.490 ±0.354 | 0.87× | -15% | |
| large_string_append_100 | 0.286 ±0.059 | 0.372 ±0.058 | 0.77× | -30% | |
| large_array_fill_200 | 1.439 ±0.159 | 1.617 ±0.098 | 0.89× | -12% | |
| large_nested_loops | 1.779 ±0.236 | 2.047 ±0.157 | 0.87× | -15% | |
| large_fibonacci_12 | 11.1 ±10.5 | 14.8 ±0.846 | 0.75× | -33% | |
| large_function_calls_500 | 5.483 ±0.517 | 6.590 ±0.507 | 0.83× | -20% | |
| large_multiline_script | 0.368 ±0.046 | 0.451 ±0.240 | 0.82× | -22% | |
| large_pipeline_chain | 0.902 ±0.104 | 1.071 ±0.171 | 0.84× | -19% | |
| large_assoc_array | 0.055 ±0.013 | 0.063 ±0.026 | 0.87× | -15% | |
| subshell | |||||
| subshell_simple | 0.041 ±0.008 | 0.046 ±0.011 | 0.88× | -14% | |
| subshell_isolation | 0.053 ±0.013 | 0.057 ±0.010 | 0.93× | -7% | |
| subshell_nested | 0.059 ±0.010 | 0.067 ±0.013 | 0.89× | -13% | |
| subshell_pipeline | 0.048 ±0.010 | 0.053 ±0.016 | 0.90× | -11% | |
| subshell_capture_loop | 0.118 ±0.032 | 0.113 ±0.022 | 1.05× | +5% | |
| subshell_process_subst | 0.083 ±0.740 | 0.072 ±0.012 | 1.14× | +14% | |
| io | |||||
| io_redirect_write | 0.088 ±0.020 | 0.076 ±0.021 | 1.16× | +16% | |
| io_append | 0.088 ±0.019 | 0.112 ±0.154 | 0.79× | -27% | |
| io_dev_null | 0.044 ±0.014 | 0.048 ±0.010 | 0.93× | -7% | |
| io_stderr_redirect | 0.040 ±0.012 | 0.044 ±0.008 | 0.90× | -11% | |
| io_read_lines | 0.088 ±0.022 | 0.111 ±0.026 | 0.79× | -26% | |
| io_multiline_heredoc | 0.064 ±0.012 | 0.065 ±0.013 | 0.99× | -1% | |
Versions
- v0.9.0
- commit 87a5516 on main, 2026-06-02 (three months ago)
- v0.17.1
- commit 9bebbe7 on main, 2026-09-01 (current HEAD, 441 commits later)
- Machine
- vm · linux / x86_64 · 4 CPUs
- Runs
- v0.9.0: 2026-09-02 18:40 UTC · v0.17.1: 2026-09-02 18:40 UTC