Counterpoint
Hex Artifact Content
Not logged in

Artifact 420f792a9add98480a7a58cbf6a85df297c8e7ce:

Attachment "bloat.awk" to wiki page [Bloat measurement] added by onys 2012-03-05 15:04:52.
0000: 23 21 2f 62 69 6e 2f 61 77 6b 20 2d 66 0a 0a 42  #!/bin/awk -f..B
0010: 45 47 49 4e 20 7b 0a 20 20 70 72 69 6e 74 20 22  EGIN {.  print "
0020: 5c 6e 4e 61 6d 65 20 6f 66 20 63 6f 6d 6d 61 6e  \nName of comman
0030: 64 20 61 6e 64 20 6e 75 6d 62 65 72 20 6f 66 20  d and number of 
0040: 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70 74  command line opt
0050: 69 6f 6e 73 3a 5c 6e 22 0a 0a 20 20 67 6e 75 20  ions:\n"..  gnu 
0060: 3d 20 22 63 61 74 20 74 61 63 20 6e 6c 20 6f 64  = "cat tac nl od
0070: 20 62 61 73 65 36 34 22 0a 20 20 67 6e 75 20 3d   base64".  gnu =
0080: 20 67 6e 75 20 22 20 66 6d 74 20 70 72 20 66 6f   gnu " fmt pr fo
0090: 6c 64 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20  ld".  gnu = gnu 
00a0: 22 20 68 65 61 64 20 74 61 69 6c 20 73 70 6c 69  " head tail spli
00b0: 74 20 63 73 70 6c 69 74 22 0a 20 20 67 6e 75 20  t csplit".  gnu 
00c0: 3d 20 67 6e 75 20 22 20 77 63 20 73 75 6d 20 63  = gnu " wc sum c
00d0: 6b 73 75 6d 20 6d 64 35 73 75 6d 20 73 68 61 31  ksum md5sum sha1
00e0: 73 75 6d 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75  sum".  gnu = gnu
00f0: 20 22 20 73 6f 72 74 20 75 6e 69 71 20 63 6f 6d   " sort uniq com
0100: 6d 20 70 74 78 20 74 73 6f 72 74 22 0a 20 20 67  m ptx tsort".  g
0110: 6e 75 20 3d 20 67 6e 75 20 22 20 63 75 74 20 70  nu = gnu " cut p
0120: 61 73 74 65 20 6a 6f 69 6e 22 0a 20 20 67 6e 75  aste join".  gnu
0130: 20 3d 20 67 6e 75 20 22 20 74 72 20 65 78 70 61   = gnu " tr expa
0140: 6e 64 20 75 6e 65 78 70 61 6e 64 22 0a 20 20 67  nd unexpand".  g
0150: 6e 75 20 3d 20 67 6e 75 20 22 20 6c 73 20 64 69  nu = gnu " ls di
0160: 72 20 76 64 69 72 20 64 69 72 63 6f 6c 6f 72 73  r vdir dircolors
0170: 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20 22 20  ".  gnu = gnu " 
0180: 63 70 20 64 64 20 69 6e 73 74 61 6c 6c 20 6d 76  cp dd install mv
0190: 20 72 6d 20 73 68 72 65 64 22 0a 20 20 67 6e 75   rm shred".  gnu
01a0: 20 3d 20 67 6e 75 20 22 20 6d 6b 64 69 72 20 72   = gnu " mkdir r
01b0: 6d 64 69 72 20 75 6e 6c 69 6e 6b 20 6d 6b 66 69  mdir unlink mkfi
01c0: 66 6f 20 6d 6b 6e 6f 64 20 6c 6e 20 6c 69 6e 6b  fo mknod ln link
01d0: 20 72 65 61 64 6c 69 6e 6b 22 0a 20 20 67 6e 75   readlink".  gnu
01e0: 20 2d 20 67 6e 75 20 22 20 63 68 67 72 70 20 63   - gnu " chgrp c
01f0: 68 6d 6f 64 20 63 68 6f 77 6e 20 74 6f 75 63 68  hmod chown touch
0200: 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20 22 20  ".  gnu = gnu " 
0210: 64 66 20 64 75 20 73 74 61 74 20 73 79 6e 63 22  df du stat sync"
0220: 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20 22 20 79  .  gnu = gnu " y
0230: 65 73 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20  es".  gnu = gnu 
0240: 22 20 65 78 70 72 22 0a 20 20 67 6e 75 20 3d 20  " expr".  gnu = 
0250: 67 6e 75 20 22 20 74 65 65 22 0a 20 20 67 6e 75  gnu " tee".  gnu
0260: 20 3d 20 67 6e 75 20 22 20 64 69 72 6e 61 6d 65   = gnu " dirname
0270: 20 62 61 73 65 6e 61 6d 65 20 70 61 74 68 63 68   basename pathch
0280: 6b 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20 22  k".  gnu = gnu "
0290: 20 73 74 74 79 20 70 72 69 6e 74 65 6e 76 20 74   stty printenv t
02a0: 74 79 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20  ty".  gnu = gnu 
02b0: 22 20 69 64 20 6c 6f 67 6e 61 6d 65 20 77 68 6f  " id logname who
02c0: 61 6d 69 20 67 72 6f 75 70 73 20 75 73 65 72 73  ami groups users
02d0: 20 77 68 6f 22 0a 20 20 67 6e 75 20 3d 20 67 6e   who".  gnu = gn
02e0: 75 20 22 20 64 61 74 65 20 75 6e 61 6d 65 20 68  u " date uname h
02f0: 6f 73 74 69 64 22 0a 20 20 67 6e 75 20 3d 20 67  ostid".  gnu = g
0300: 6e 75 20 22 20 63 68 63 6f 6e 20 72 75 6e 63 6f  nu " chcon runco
0310: 6e 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20 22  n".  gnu = gnu "
0320: 20 65 6e 76 20 6e 69 63 65 20 6e 6f 68 75 70 20   env nice nohup 
0330: 73 75 22 0a 20 20 67 6e 75 20 3d 20 67 6e 75 20  su".  gnu = gnu 
0340: 22 20 73 6c 65 65 70 22 0a 20 20 67 6e 75 20 3d  " sleep".  gnu =
0350: 20 67 6e 75 20 22 20 66 61 63 74 6f 72 20 73 65   gnu " factor se
0360: 71 22 0a 20 20 20 0a 20 20 6d 61 78 20 3d 20 73  q".   .  max = s
0370: 70 6c 69 74 20 28 67 6e 75 2c 63 6f 6d 6d 61 6e  plit (gnu,comman
0380: 64 73 2c 22 20 22 29 0a 20 20 20 0a 20 20 66 6f  ds," ").   .  fo
0390: 72 20 28 69 20 3d 20 31 3b 20 69 20 3c 3d 20 6d  r (i = 1; i <= m
03a0: 61 78 3b 20 69 2b 2b 29 20 7b 0a 20 20 20 20 6f  ax; i++) {.    o
03b0: 70 74 69 6f 6e 73 20 3d 20 30 3b 0a 20 20 20 20  ptions = 0;.    
03c0: 63 6d 64 20 3d 20 63 6f 6d 6d 61 6e 64 73 5b 69  cmd = commands[i
03d0: 5d 20 22 20 2d 2d 68 65 6c 70 22 0a 20 20 20 20  ] " --help".    
03e0: 77 68 69 6c 65 20 28 28 63 6d 64 20 7c 20 67 65  while ((cmd | ge
03f0: 74 6c 69 6e 65 29 20 3e 20 30 29 20 7b 0a 20 20  tline) > 0) {.  
0400: 20 20 20 20 69 66 20 28 24 30 20 7e 20 2f 5e 55      if ($0 ~ /^U
0410: 73 61 67 65 3a 2f 29 20 6e 61 6d 65 20 3d 20 24  sage:/) name = $
0420: 32 3b 0a 20 20 20 20 20 20 69 66 20 28 24 30 20  2;.      if ($0 
0430: 7e 20 2f 5e 20 2b 2d 2f 29 20 6f 70 74 69 6f 6e  ~ /^ +-/) option
0440: 73 2b 2b 0a 20 20 20 20 7d 0a 20 20 20 20 63 6c  s++.    }.    cl
0450: 6f 73 65 28 63 6d 64 29 3b 0a 20 20 20 20 70 72  ose(cmd);.    pr
0460: 69 6e 74 20 6e 61 6d 65 20 22 3a 20 22 20 6f 70  int name ": " op
0470: 74 69 6f 6e 73 3b 0a 20 20 20 20 74 6f 74 61 6c  tions;.    total
0480: 20 3d 20 74 6f 74 61 6c 20 2b 20 6f 70 74 69 6f   = total + optio
0490: 6e 73 3b 0a 20 20 7d 0a 20 20 70 72 69 6e 74 20  ns;.  }.  print 
04a0: 22 5c 6e 4e 75 6d 62 65 72 20 6f 66 20 63 6f 6d  "\nNumber of com
04b0: 6d 61 6e 64 73 3a 20 22 20 6d 61 78 20 22 5c 6e  mands: " max "\n
04c0: 22 0a 20 20 70 72 69 6e 74 20 22 54 6f 74 61 6c  ".  print "Total
04d0: 20 6e 75 6d 62 65 72 20 6f 66 20 6f 70 74 69 6f   number of optio
04e0: 6e 73 3a 20 22 20 74 6f 74 61 6c 0a 20 20 70 72  ns: " total.  pr
04f0: 69 6e 74 20 22 20 20 77 69 74 68 6f 75 74 20 63  int "  without c
0500: 6f 75 6e 74 69 6e 67 20 2d 2d 76 65 72 73 69 6f  ounting --versio
0510: 6e 20 61 6e 64 20 2d 2d 68 65 6c 70 3a 20 22 20  n and --help: " 
0520: 74 6f 74 61 6c 20 2d 20 28 6d 61 78 20 2a 20 32  total - (max * 2
0530: 29 20 22 5c 6e 22 0a 20 20 70 72 69 6e 74 20 22  ) "\n".  print "
0540: 41 76 65 72 61 67 65 20 70 65 72 20 63 6f 6d 6d  Average per comm
0550: 61 6e 64 3a 20 22 20 74 6f 74 61 6c 20 2f 20 6d  and: " total / m
0560: 61 78 0a 20 20 70 72 69 6e 74 20 22 20 20 77 69  ax.  print "  wi
0570: 74 68 6f 75 74 20 63 6f 75 6e 74 69 6e 67 20 2d  thout counting -
0580: 2d 76 65 72 73 69 6f 6e 20 61 6e 64 20 2d 2d 68  -version and --h
0590: 65 6c 70 3a 20 22 20 28 74 6f 74 61 6c 20 2f 20  elp: " (total / 
05a0: 6d 61 78 29 20 2d 20 32 20 22 5c 6e 22 0a 7d 0a  max) - 2 "\n".}.
05b0: 0a                                               .