Limit bandwidth in Linux

If you want to limit your bandwidth in Linux you could use trickle or wondershaper, to limit a process use this:

trickle -u 100 -d 500 wget http://example.com

trickle -u[up]  -d [down] [program]

 

for a global limit use:

wondershaper eth0 500 100

wondershaper [interface]  [down] [up]

for remove :

wondershaper clear [interface]

Benchmark Bash fastest replace with tr sed awk perl

Test String (10xX):

___XXXXX_____XXXXX_____

Test Cases Results must look like:

single char remove:

___XXXX_____XXXXX_____

single char replace:

___0XXXX_____XXXXX_____

string/multi char remove:

_____________

string/multi char replace:

___00000_____00000_____

Times:

run the test string from file 100000 times.

single char remove single char replace multi char remove multi char replace string remove string replace
sed 5.658s 5.774s 3.449s 5.929s 3.476s 5.724s
perl regex 5.604s 5.918s 3.428s 6.027s 3.482s 5.870s
awk gsub 3.469s 5.892s 3.339s 5.942s
tr bash 5.972s 5.897s
perl tr  5.996s  5.837s

 

For bash its the easiest way to use sed because its simpler to use perl and it could do the most things or if you do simple things you could use tr.In perl you could see this benchmark.

SED 4.2.2

single char remove:

time cat bench.txt | sed 's/X//'

single char replace:

time cat bench.txt | sed 's/X/0/'

multi char remove:

time cat bench.txt | sed 's/X//g'

multi char replace:

time cat bench.txt | sed 's/X/0/g'

string remove:

time cat bench.txt | sed 's/XXXXX//g'

string replace:

time cat bench.txt | sed 's/XXXXX/00000/g'

 

AWK 4.0.1

single replace with regex not possible.

multi char remove:

time cat bench.txt | awk '{gsub("X","",$1);print $1;}'

multi char replace:

time cat bench.txt | awk '{gsub("X","0",$1);print $1;}'

string remove:

time cat bench.txt | awk '{gsub("XXXXX","",$1);print $1;}'

string replace:

time cat bench.txt | awk '{gsub("XXXXX","00000",$1);print $1;}'

 

TR 8.21

single replace and remove not possible.

multi char replace:

time cat bench.txt | tr "X" "0"

string replace:

time cat bench.txt | tr "XXXXX" "00000"

 

PERL REGEX 5

single char remove:

time cat bench.txt | perl -lpe 's/X//'

single char replace:

time cat bench.txt | perl -lpe 's/X/0/'

multi char remove:

time cat bench.txt | perl -lpe 's/X//g'

multi char replace:

time cat bench.txt | perl -lpe 's/X/0/g'

string remove:

time cat bench.txt | perl -lpe 's/XXXXX//g'

string replace:

time cat bench.txt | perl -lpe 's/XXXXX/00000/g'

 

PERL TR 5

multi char replace:

time cat bench.txt | perl -lpe 's/X/0/g'

string replace:

time cat bench.txt | perl -lpe 's/XXXXX/00000/g'