In bash, arithmetic evaluation ((...)) is faster than conditional expression [[ ... ]] when comparing numbers. $ cat cond_exp.sh #!/bin/bash C=0 while [[ $C -lt 10000 ]] do C=$C+1 done $ time ./cond_exp.sh real 0m12.773s user 0m12.742s sys 0m0.011s $ time ./cond_exp.sh real 0m12.763s user 0m12.734s sys 0m0.010s $ cat arth_exp.sh #the only difference is on the while-line #!/bin/bash C=0 while ((C<10000)) do C=$C+1 done $ time ./arth_exp.sh real 0m8.175s user 0m8.149s sys 0m0.008s $ time ./arth_exp.sh real 0m8.201s user 0m8.181s sys 0m0.006s In this test, arithmetic evaluation is about 35% faster. Or, conditional expression is about 50% slower. But the real difference should be less dramatic, because some portion of the time running the two scripts is spent elsewhere, such as C value increment. Unrelated: The following code is an improvement of the second one above (but that's not the point of this study): $ cat arth_exp2.sh #!/bin/bash C=0 while ((C++<10000)) do : done $ time ./arth_exp2.sh real 0m0.069s user 0m0.063s sys 0m0.004s