oilshell.org
    
OSH Parser Performance
We time $sh -n $file for various files under various shells, and repeat then
run under cachegrind for stable metrics.
Source code: oil/benchmarks/osh-parser.sh
Raw files
Summary
Instructions Per Line (via cachegrind)
Lower numbers are generally better, but each shell recognizes a different
language, and OSH uses a more thorough parsing algorithm.  In thousands of
"I refs".
  
    
    | shell label | 
    total lines | 
    thousand irefs per line | 
    
  
  
    
      |  bash  | 
       118,863  | 
       15.1  | 
    
    
      |  dash  | 
       111,674  | 
       2.3  | 
    
    
      |  osh-native  | 
       118,863  | 
       13.3  | 
    
  
  
    
    
    
  
(zsh isn't measured because zsh -n unexpectedly forks.)
Average Parsing Rate, Measured on Two Machines (lines/ms)
Shell startup time is included in the elapsed time measurements, but long files
are chosen to minimize its effect.
  
    
    | shell label | 
    total lines | 
    host no-host | 
    
  
  
    
      |  dash  | 
       111,674  | 
       2,528  | 
    
    
      |  bash  | 
       118,863  | 
       666  | 
    
    
      |  osh-native  | 
       118,863  | 
       378  | 
    
    
      |  osh-cpython  | 
       118,863  | 
       11  | 
    
  
  
    
    
    
  
Per-File Measurements
Time and Memory
  
    
    | shell label | 
    elapsed ms | 
    user ms | 
    sys ms | 
    max rss MB | 
    num lines | 
    filename | 
    
  
  
    
      |  dash  | 
       2  | 
       2  | 
       0  | 
       1  | 
       2,698  | 
       Build.sh  | 
    
    
      |  bash  | 
       5  | 
       0  | 
       5  | 
       3  | 
       2,698  | 
       Build.sh  | 
    
    
      |  osh-native  | 
       9  | 
       3  | 
       6  | 
       8  | 
       2,698  | 
       Build.sh  | 
    
    
      |  osh-cpython  | 
       286  | 
       265  | 
       21  | 
       20  | 
       2,698  | 
       Build.sh  | 
    
    
      |  dash  | 
       2  | 
       2  | 
       0  | 
       1  | 
       2,512  | 
       abuild  | 
    
    
      |  bash  | 
       7  | 
       3  | 
       3  | 
       3  | 
       2,512  | 
       abuild  | 
    
    
      |  osh-native  | 
       9  | 
       6  | 
       3  | 
       8  | 
       2,512  | 
       abuild  | 
    
    
      |  osh-cpython  | 
       385  | 
       360  | 
       24  | 
       21  | 
       2,512  | 
       abuild  | 
    
    
      |  dash  | 
       10  | 
       6  | 
       3  | 
       2  | 
       20,489  | 
       configure  | 
    
    
      |  bash  | 
       35  | 
       34  | 
       0  | 
       3  | 
       20,489  | 
       configure  | 
    
    
      |  osh-native  | 
       52  | 
       44  | 
       8  | 
       21  | 
       20,489  | 
       configure  | 
    
    
      |  osh-cpython  | 
       1,878  | 
       1,837  | 
       40  | 
       42  | 
       20,489  | 
       configure  | 
    
    
      |  dash  | 
       21  | 
       17  | 
       4  | 
       1  | 
       69,779  | 
       configure-coreutils  | 
    
    
      |  bash  | 
       79  | 
       75  | 
       4  | 
       3  | 
       69,779  | 
       configure-coreutils  | 
    
    
      |  osh-native  | 
       181  | 
       152  | 
       28  | 
       51  | 
       69,779  | 
       configure-coreutils  | 
    
    
      |  osh-cpython  | 
       5,430  | 
       5,329  | 
       100  | 
       86  | 
       69,779  | 
       configure-coreutils  | 
    
    
      |  osh-native  | 
       7  | 
       7  | 
       0  | 
       8  | 
       2,029  | 
       configure-helper.sh  | 
    
    
      |  bash  | 
       8  | 
       8  | 
       0  | 
       3  | 
       2,029  | 
       configure-helper.sh  | 
    
    
      |  osh-cpython  | 
       271  | 
       243  | 
       28  | 
       20  | 
       2,029  | 
       configure-helper.sh  | 
    
    
      |  dash  | 
       2  | 
       0  | 
       2  | 
       1  | 
       1,733  | 
       functions  | 
    
    
      |  bash  | 
       4  | 
       4  | 
       0  | 
       3  | 
       1,733  | 
       functions  | 
    
    
      |  osh-native  | 
       7  | 
       7  | 
       0  | 
       8  | 
       1,733  | 
       functions  | 
    
    
      |  osh-cpython  | 
       256  | 
       232  | 
       24  | 
       20  | 
       1,733  | 
       functions  | 
    
    
      |  dash  | 
       5  | 
       5  | 
       0  | 
       2  | 
       9,661  | 
       ltmain.sh  | 
    
    
      |  bash  | 
       17  | 
       17  | 
       0  | 
       4  | 
       9,661  | 
       ltmain.sh  | 
    
    
      |  osh-native  | 
       22  | 
       18  | 
       4  | 
       15  | 
       9,661  | 
       ltmain.sh  | 
    
    
      |  osh-cpython  | 
       877  | 
       860  | 
       16  | 
       28  | 
       9,661  | 
       ltmain.sh  | 
    
    
      |  dash  | 
       1  | 
       1  | 
       0  | 
       1  | 
       1,679  | 
       t4014-format-patch.sh  | 
    
    
      |  bash  | 
       4  | 
       0  | 
       4  | 
       3  | 
       1,679  | 
       t4014-format-patch.sh  | 
    
    
      |  osh-native  | 
       5  | 
       5  | 
       0  | 
       7  | 
       1,679  | 
       t4014-format-patch.sh  | 
    
    
      |  osh-cpython  | 
       102  | 
       81  | 
       20  | 
       18  | 
       1,679  | 
       t4014-format-patch.sh  | 
    
    
      |  dash  | 
       1  | 
       1  | 
       0  | 
       1  | 
       3,123  | 
       t9300-fast-import.sh  | 
    
    
      |  osh-native  | 
       5  | 
       0  | 
       5  | 
       7  | 
       3,123  | 
       t9300-fast-import.sh  | 
    
    
      |  bash  | 
       5  | 
       0  | 
       5  | 
       3  | 
       3,123  | 
       t9300-fast-import.sh  | 
    
    
      |  osh-cpython  | 
       106  | 
       85  | 
       20  | 
       18  | 
       3,123  | 
       t9300-fast-import.sh  | 
    
    
      |  bash  | 
       15  | 
       15  | 
       0  | 
       3  | 
       5,160  | 
       test-cmd-util.sh  | 
    
    
      |  osh-native  | 
       18  | 
       11  | 
       7  | 
       12  | 
       5,160  | 
       test-cmd-util.sh  | 
    
    
      |  osh-cpython  | 
       790  | 
       769  | 
       20  | 
       26  | 
       5,160  | 
       test-cmd-util.sh  | 
    
  
  
    
    
    
    
    
    
    
  
Instruction Counts
  
    
    | shell label | 
    irefs | 
    num lines | 
    filename | 
    
  
  
    
      |  dash  | 
       6,416,010  | 
       2,698  | 
       Build.sh  | 
    
    
      |  bash  | 
       35,958,882  | 
       2,698  | 
       Build.sh  | 
    
    
      |  osh-native  | 
       37,900,603  | 
       2,698  | 
       Build.sh  | 
    
    
      |  dash  | 
       7,042,147  | 
       2,512  | 
       abuild  | 
    
    
      |  bash  | 
       43,761,475  | 
       2,512  | 
       abuild  | 
    
    
      |  osh-native  | 
       45,786,596  | 
       2,512  | 
       abuild  | 
    
    
      |  dash  | 
       53,261,640  | 
       20,489  | 
       configure  | 
    
    
      |  osh-native  | 
       279,152,403  | 
       20,489  | 
       configure  | 
    
    
      |  bash  | 
       349,702,388  | 
       20,489  | 
       configure  | 
    
    
      |  dash  | 
       151,770,612  | 
       69,779  | 
       configure-coreutils  | 
    
    
      |  bash  | 
       886,197,417  | 
       69,779  | 
       configure-coreutils  | 
    
    
      |  osh-native  | 
       904,242,767  | 
       69,779  | 
       configure-coreutils  | 
    
    
      |  osh-native  | 
       30,987,559  | 
       2,029  | 
       configure-helper.sh  | 
    
    
      |  bash  | 
       47,119,375  | 
       2,029  | 
       configure-helper.sh  | 
    
    
      |  dash  | 
       4,652,224  | 
       1,733  | 
       functions  | 
    
    
      |  bash  | 
       28,169,399  | 
       1,733  | 
       functions  | 
    
    
      |  osh-native  | 
       29,253,892  | 
       1,733  | 
       functions  | 
    
    
      |  dash  | 
       23,597,230  | 
       9,661  | 
       ltmain.sh  | 
    
    
      |  osh-native  | 
       114,620,046  | 
       9,661  | 
       ltmain.sh  | 
    
    
      |  bash  | 
       172,930,991  | 
       9,661  | 
       ltmain.sh  | 
    
    
      |  dash  | 
       3,166,564  | 
       1,679  | 
       t4014-format-patch.sh  | 
    
    
      |  osh-native  | 
       11,930,412  | 
       1,679  | 
       t4014-format-patch.sh  | 
    
    
      |  bash  | 
       25,314,918  | 
       1,679  | 
       t4014-format-patch.sh  | 
    
    
      |  dash  | 
       4,357,271  | 
       3,123  | 
       t9300-fast-import.sh  | 
    
    
      |  osh-native  | 
       14,036,603  | 
       3,123  | 
       t9300-fast-import.sh  | 
    
    
      |  bash  | 
       41,138,083  | 
       3,123  | 
       t9300-fast-import.sh  | 
    
    
      |  osh-native  | 
       113,857,933  | 
       5,160  | 
       test-cmd-util.sh  | 
    
    
      |  bash  | 
       161,950,200  | 
       5,160  | 
       test-cmd-util.sh  | 
    
  
  
    
    
    
    
  
Shell and Host Details
Raw Data