Skip to main content
Active reading [<https://en.wiktionary.org/wiki/Boolean#Noun>]. Made compliant with the Jon Skeet Decree - <https://twitter.com/PeterMortensen/status/976400000942034944>.
Source Link
Peter Mortensen
  • 31.4k
  • 22
  • 109
  • 132

This is a speed test about different ways to test "boolean""Boolean" values in Bash:

#!/bin/bash
rounds=100000

b=true # forFor true; b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done 
time for i in $(seq $rounds); do $b; done 
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done

b=x; # orOr any non-null string for true; b='' for false
time for i in $(seq $rounds); do [ "$b" ]; done 
time for i in $(seq $rounds); do [[ $b ]]; done

b=1 # orOr any non-zero integer for true; b=0 for false
time for i in $(seq $rounds); do ((b)); done

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,767s
sys     0m0,029s

real    0m0,562s
user    0m0,509s
sys     0m0,022s

real    0m0,829s
user    0m0,782s
sys     0m0,008s

real    0m0,782s
user    0m0,730s
sys     0m0,015s

real    0m0,402s
user    0m0,391s
sys     0m0,006s

real    0m0,668s
user    0m0,633s
sys     0m0,008s

real    0m0,344s
user    0m0,311s
sys     0m0,016s

real    0m0,367s
user    0m0,347s
sys     0m0,017s

This is a speed test about different ways to test "boolean" values in Bash:

#!/bin/bash
rounds=100000

b=true # for true; b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done 
time for i in $(seq $rounds); do $b; done 
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done

b=x; # or any non-null string for true; b='' for false
time for i in $(seq $rounds); do [ "$b" ]; done 
time for i in $(seq $rounds); do [[ $b ]]; done

b=1 # or any non-zero integer for true; b=0 for false
time for i in $(seq $rounds); do ((b)); done

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,767s
sys     0m0,029s

real    0m0,562s
user    0m0,509s
sys     0m0,022s

real    0m0,829s
user    0m0,782s
sys     0m0,008s

real    0m0,782s
user    0m0,730s
sys     0m0,015s

real    0m0,402s
user    0m0,391s
sys     0m0,006s

real    0m0,668s
user    0m0,633s
sys     0m0,008s

real    0m0,344s
user    0m0,311s
sys     0m0,016s

real    0m0,367s
user    0m0,347s
sys     0m0,017s

This is a speed test about different ways to test "Boolean" values in Bash:

#!/bin/bash
rounds=100000

b=true # For true; b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done
time for i in $(seq $rounds); do $b; done
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done

b=x; # Or any non-null string for true; b='' for false
time for i in $(seq $rounds); do [ "$b" ]; done
time for i in $(seq $rounds); do [[ $b ]]; done

b=1 # Or any non-zero integer for true; b=0 for false
time for i in $(seq $rounds); do ((b)); done

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,767s
sys     0m0,029s

real    0m0,562s
user    0m0,509s
sys     0m0,022s

real    0m0,829s
user    0m0,782s
sys     0m0,008s

real    0m0,782s
user    0m0,730s
sys     0m0,015s

real    0m0,402s
user    0m0,391s
sys     0m0,006s

real    0m0,668s
user    0m0,633s
sys     0m0,008s

real    0m0,344s
user    0m0,311s
sys     0m0,016s

real    0m0,367s
user    0m0,347s
sys     0m0,017s
edit boolean value explanations
Source Link
jarno
  • 826
  • 12
  • 21

This is a speed test about different ways to test "boolean" values in Bash:

#!/bin/bash
rounds=100000 

b=true # for true; b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done 
time for i in $(seq $rounds); do $b; done 
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done 

b=x; # or any non-null string for truetrue; b='' for false
time for i in $(seq $rounds); do [ "$b" ]; done # b='' for false
time for i in $(seq $rounds); do [[ $b ]]; done # b='' for false 

b=1 # or any non-zero integer for truetrue; b=0 for false
time for i in $(seq $rounds); do ((b)); done # b=0 for false

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,767s
sys     0m0,029s

real    0m0,562s
user    0m0,509s
sys     0m0,022s

real    0m0,829s
user    0m0,782s
sys     0m0,008s

real    0m0,782s
user    0m0,730s
sys     0m0,015s

real    0m0,402s
user    0m0,391s
sys     0m0,006s

real    0m0,668s
user    0m0,633s
sys     0m0,008s

real    0m0,344s
user    0m0,311s
sys     0m0,016s

real    0m0,367s
user    0m0,347s
sys     0m0,017s

This is a speed test about different ways to test "boolean" values in Bash:

#!/bin/bash
rounds=100000
b=true # b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done 
time for i in $(seq $rounds); do $b; done 
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done
b=x; # or any non-null string for true
time for i in $(seq $rounds); do [ "$b" ]; done # b='' for false
time for i in $(seq $rounds); do [[ $b ]]; done # b='' for false
b=1 # or any non-zero integer for true
time for i in $(seq $rounds); do ((b)); done # b=0 for false

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,767s
sys     0m0,029s

real    0m0,562s
user    0m0,509s
sys     0m0,022s

real    0m0,829s
user    0m0,782s
sys     0m0,008s

real    0m0,782s
user    0m0,730s
sys     0m0,015s

real    0m0,402s
user    0m0,391s
sys     0m0,006s

real    0m0,668s
user    0m0,633s
sys     0m0,008s

real    0m0,344s
user    0m0,311s
sys     0m0,016s

real    0m0,367s
user    0m0,347s
sys     0m0,017s

This is a speed test about different ways to test "boolean" values in Bash:

#!/bin/bash
rounds=100000 

b=true # for true; b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done 
time for i in $(seq $rounds); do $b; done 
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done 

b=x; # or any non-null string for true; b='' for false
time for i in $(seq $rounds); do [ "$b" ]; done 
time for i in $(seq $rounds); do [[ $b ]]; done 

b=1 # or any non-zero integer for true; b=0 for false
time for i in $(seq $rounds); do ((b)); done

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,767s
sys     0m0,029s

real    0m0,562s
user    0m0,509s
sys     0m0,022s

real    0m0,829s
user    0m0,782s
sys     0m0,008s

real    0m0,782s
user    0m0,730s
sys     0m0,015s

real    0m0,402s
user    0m0,391s
sys     0m0,006s

real    0m0,668s
user    0m0,633s
sys     0m0,008s

real    0m0,344s
user    0m0,311s
sys     0m0,016s

real    0m0,367s
user    0m0,347s
sys     0m0,017s
fixed [[ $b ]] and added [ "$b" ]; explain values
Source Link
jarno
  • 826
  • 12
  • 21

This is a speed test about different ways to test "boolean" values in Bash:

#!/bin/bash
rounds=100000
b=true # b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done 
time for i in $(seq $rounds); do $b; done 
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done
b=1;b=x; # or any non-null string for true
time for i in $(seq $rounds); do [ "$b" ]; done # b='' for false
time for i in $(seq $rounds); do [[ b$b ]]; done # b='' for false
b=1 # or any non-zero integer for true
time for i in $(seq $rounds); do ((b)); done # b=0 for false

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,761s767s
sys     0m0,025s029s

real    0m0,538s562s
user    0m0,502s509s
sys     0m0,012s022s

real    0m0,790s829s
user    0m0,761s782s
sys     0m0,012s008s

real    0m0,746s782s
user    0m0,718s730s
sys     0m0,008s015s

real    0m0,396s402s
user    0m0,394s391s
sys     0m0,000s006s

real    0m0,309s668s
user    0m0,300s633s
sys     0m0,008s

real    0m0,377s344s
user    0m0,350s311s
sys     0m0,009s016s

real    0m0,367s
user    0m0,347s
sys     0m0,017s

This is a speed test about different ways to test "boolean" values in Bash:

#!/bin/bash
rounds=100000
b=true # b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done
time for i in $(seq $rounds); do $b; done
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done
b=1;
time for i in $(seq $rounds); do [[ b ]]; done # b='' for false
time for i in $(seq $rounds); do ((b)); done # b=0 for false

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,761s
sys     0m0,025s

real    0m0,538s
user    0m0,502s
sys     0m0,012s

real    0m0,790s
user    0m0,761s
sys     0m0,012s

real    0m0,746s
user    0m0,718s
sys     0m0,008s

real    0m0,396s
user    0m0,394s
sys     0m0,000s

real    0m0,309s
user    0m0,300s
sys     0m0,008s

real    0m0,377s
user    0m0,350s
sys     0m0,009s

This is a speed test about different ways to test "boolean" values in Bash:

#!/bin/bash
rounds=100000
b=true # b=false for false
type -a true
time for i in $(seq $rounds); do command $b; done 
time for i in $(seq $rounds); do $b; done 
time for i in $(seq $rounds); do [ "$b" == true ]; done
time for i in $(seq $rounds); do test "$b" == true; done
time for i in $(seq $rounds); do [[ $b == true ]]; done
b=x; # or any non-null string for true
time for i in $(seq $rounds); do [ "$b" ]; done # b='' for false
time for i in $(seq $rounds); do [[ $b ]]; done # b='' for false
b=1 # or any non-zero integer for true
time for i in $(seq $rounds); do ((b)); done # b=0 for false

It would print something like

true is a shell builtin
true is /bin/true

real    0m0,815s
user    0m0,767s
sys     0m0,029s

real    0m0,562s
user    0m0,509s
sys     0m0,022s

real    0m0,829s
user    0m0,782s
sys     0m0,008s

real    0m0,782s
user    0m0,730s
sys     0m0,015s

real    0m0,402s
user    0m0,391s
sys     0m0,006s

real    0m0,668s
user    0m0,633s
sys     0m0,008s

real    0m0,344s
user    0m0,311s
sys     0m0,016s

real    0m0,367s
user    0m0,347s
sys     0m0,017s
added [[ b ]] test and marked which value would be false
Source Link
jarno
  • 826
  • 12
  • 21
Loading
Source Link
jarno
  • 826
  • 12
  • 21
Loading