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,679 | 
    
      | bash | 118,863 | 698 | 
    
      | osh-native | 118,863 | 406 | 
    
      | osh-cpython | 118,863 | 12 | 
  
  
    
    
    
  
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 | 5 | 0 | 3 | 2,698 | Build.sh | 
    
      | osh-native | 9 | 9 | 0 | 8 | 2,698 | Build.sh | 
    
      | osh-cpython | 274 | 262 | 12 | 20 | 2,698 | Build.sh | 
    
      | dash | 2 | 2 | 0 | 1 | 2,512 | abuild | 
    
      | bash | 6 | 6 | 0 | 3 | 2,512 | abuild | 
    
      | osh-native | 9 | 4 | 4 | 9 | 2,512 | abuild | 
    
      | osh-cpython | 373 | 340 | 32 | 21 | 2,512 | abuild | 
    
      | dash | 9 | 9 | 0 | 2 | 20,489 | configure | 
    
      | bash | 32 | 28 | 4 | 3 | 20,489 | configure | 
    
      | osh-native | 48 | 36 | 12 | 21 | 20,489 | configure | 
    
      | osh-cpython | 1,842 | 1,808 | 33 | 42 | 20,489 | configure | 
    
      | dash | 21 | 21 | 0 | 2 | 69,779 | configure-coreutils | 
    
      | bash | 77 | 77 | 0 | 3 | 69,779 | configure-coreutils | 
    
      | osh-native | 166 | 129 | 36 | 51 | 69,779 | configure-coreutils | 
    
      | osh-cpython | 5,372 | 5,295 | 76 | 86 | 69,779 | configure-coreutils | 
    
      | bash | 6 | 6 | 0 | 3 | 2,029 | configure-helper.sh | 
    
      | osh-native | 7 | 7 | 0 | 8 | 2,029 | configure-helper.sh | 
    
      | osh-cpython | 262 | 245 | 16 | 20 | 2,029 | configure-helper.sh | 
    
      | dash | 1 | 2 | 0 | 1 | 1,733 | functions | 
    
      | bash | 4 | 4 | 0 | 3 | 1,733 | functions | 
    
      | osh-native | 7 | 0 | 7 | 8 | 1,733 | functions | 
    
      | osh-cpython | 258 | 230 | 28 | 20 | 1,733 | functions | 
    
      | dash | 4 | 4 | 0 | 2 | 9,661 | ltmain.sh | 
    
      | bash | 17 | 17 | 0 | 4 | 9,661 | ltmain.sh | 
    
      | osh-native | 21 | 14 | 7 | 15 | 9,661 | ltmain.sh | 
    
      | osh-cpython | 869 | 859 | 9 | 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 | 4 | 0 | 4 | 7 | 1,679 | t4014-format-patch.sh | 
    
      | osh-cpython | 95 | 63 | 31 | 18 | 1,679 | t4014-format-patch.sh | 
    
      | dash | 1 | 1 | 0 | 1 | 3,123 | t9300-fast-import.sh | 
    
      | osh-native | 4 | 4 | 0 | 7 | 3,123 | t9300-fast-import.sh | 
    
      | bash | 5 | 5 | 0 | 3 | 3,123 | t9300-fast-import.sh | 
    
      | osh-cpython | 102 | 78 | 23 | 18 | 3,123 | t9300-fast-import.sh | 
    
      | bash | 15 | 11 | 4 | 3 | 5,160 | test-cmd-util.sh | 
    
      | osh-native | 18 | 18 | 0 | 12 | 5,160 | test-cmd-util.sh | 
    
      | osh-cpython | 778 | 754 | 24 | 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,205 | 2,698 | Build.sh | 
    
      | dash | 7,042,147 | 2,512 | abuild | 
    
      | bash | 43,761,475 | 2,512 | abuild | 
    
      | osh-native | 45,786,167 | 2,512 | abuild | 
    
      | dash | 53,261,640 | 20,489 | configure | 
    
      | osh-native | 279,152,226 | 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,998 | 69,779 | configure-coreutils | 
    
      | osh-native | 30,985,821 | 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,409 | 1,733 | functions | 
    
      | dash | 23,597,230 | 9,661 | ltmain.sh | 
    
      | osh-native | 114,619,423 | 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,929,782 | 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,091 | 3,123 | t9300-fast-import.sh | 
    
      | bash | 41,138,083 | 3,123 | t9300-fast-import.sh | 
    
      | osh-native | 113,857,523 | 5,160 | test-cmd-util.sh | 
    
      | bash | 161,950,200 | 5,160 | test-cmd-util.sh | 
  
  
    
    
    
    
  
Shell and Host Details
Raw Data