 * 20150805 added check for units being the same in conv
conv.main: 500 runs, user: 1.01s (100.0%), sys: 0.00s (-nan%), total: 1.01s (100.0%)
conv.conv_identity: 500 runs, user: 0.24s (23.8%), sys: 0.00s (-nan%), total: 0.24s (23.8%)
conv.conv_identity_longname: 500 runs, user: 0.23s (22.8%), sys: 0.00s (-nan%), total: 0.23s (22.8%)
conv.conv_linear: 500 runs, user: 0.18s (17.8%), sys: 0.00s (-nan%), total: 0.18s (17.8%)
conv.conv_linear_longname: 500 runs, user: 0.36s (35.6%), sys: 0.00s (-nan%), total: 0.36s (35.6%)
var.main: 100 runs, user: 1.77s (100.0%), sys: 0.07s (100.0%), total: 1.84s (100.0%)
var.new: 100 runs, user: 0.01s (0.6%), sys: 0.00s (0.0%), total: 0.01s (0.5%)
var.newi: 100 runs, user: 0.01s (0.6%), sys: 0.00s (0.0%), total: 0.01s (0.5%)
var.newd: 100 runs, user: 0.03s (1.7%), sys: 0.00s (0.0%), total: 0.03s (1.6%)
var.newc: 100 runs, user: 0.27s (15.3%), sys: 0.01s (14.3%), total: 0.28s (15.2%)
var.newb: 100 runs, user: 0.15s (8.5%), sys: 0.04s (57.1%), total: 0.19s (10.3%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.05s (2.8%), sys: 0.01s (14.3%), total: 0.06s (3.3%)
var.enqd: 100 runs, user: 0.08s (4.5%), sys: 0.01s (14.3%), total: 0.09s (4.9%)
var.enqc: 100 runs, user: 0.21s (11.9%), sys: 0.00s (0.0%), total: 0.21s (11.4%)
var.enqb: 100 runs, user: 0.15s (8.5%), sys: 0.00s (0.0%), total: 0.15s (8.2%)
var.unset: 100 runs, user: 0.10s (5.6%), sys: 0.00s (0.0%), total: 0.10s (5.4%)
var.seti: 100 runs, user: 0.08s (4.5%), sys: 0.00s (0.0%), total: 0.08s (4.3%)
var.setd: 100 runs, user: 0.16s (9.0%), sys: 0.00s (0.0%), total: 0.16s (8.7%)
var.setc: 100 runs, user: 0.27s (15.3%), sys: 0.00s (0.0%), total: 0.27s (14.7%)
var.setb: 100 runs, user: 0.20s (11.3%), sys: 0.00s (0.0%), total: 0.20s (10.9%)
bulletin.main: 20 runs, user: 2.12s (100.0%), sys: 0.11s (100.0%), total: 2.23s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.01s (0.5%), sys: 0.00s (0.0%), total: 0.01s (0.4%)
bulletin.decode_bufr: 20 runs, user: 0.58s (27.4%), sys: 0.11s (100.0%), total: 0.69s (30.9%)
bulletin.decode_crex_head: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
bulletin.decode_crex: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
bulletin.encode_bufr: 20 runs, user: 1.52s (71.7%), sys: 0.00s (0.0%), total: 1.52s (68.2%)
bulletin.encode_crex: 20 runs, user: 0.01s (0.5%), sys: 0.00s (0.0%), total: 0.01s (0.4%)

 * 20150727 reimplemented conv with a vector and binary search
conv.main: 500 runs, user: 0.89s (100.0%), sys: 0.00s (-nan%), total: 0.89s (100.0%)
conv.conv_identity: 500 runs, user: 0.27s (30.3%), sys: 0.00s (-nan%), total: 0.27s (30.3%)
conv.conv_identity_longname: 500 runs, user: 0.18s (20.2%), sys: 0.00s (-nan%), total: 0.18s (20.2%)
conv.conv_linear: 500 runs, user: 0.16s (18.0%), sys: 0.00s (-nan%), total: 0.16s (18.0%)
conv.conv_linear_longname: 500 runs, user: 0.28s (31.5%), sys: 0.00s (-nan%), total: 0.28s (31.5%)
var.main: 100 runs, user: 1.70s (100.0%), sys: 0.06s (100.0%), total: 1.76s (100.0%)
var.new: 100 runs, user: 0.05s (2.9%), sys: 0.00s (0.0%), total: 0.05s (2.8%)
var.newi: 100 runs, user: 0.02s (1.2%), sys: 0.00s (0.0%), total: 0.02s (1.1%)
var.newd: 100 runs, user: 0.03s (1.8%), sys: 0.00s (0.0%), total: 0.03s (1.7%)
var.newc: 100 runs, user: 0.26s (15.3%), sys: 0.03s (50.0%), total: 0.29s (16.5%)
var.newb: 100 runs, user: 0.14s (8.2%), sys: 0.02s (33.3%), total: 0.16s (9.1%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.06s (3.5%), sys: 0.00s (0.0%), total: 0.06s (3.4%)
var.enqd: 100 runs, user: 0.08s (4.7%), sys: 0.00s (0.0%), total: 0.08s (4.5%)
var.enqc: 100 runs, user: 0.19s (11.2%), sys: 0.01s (16.7%), total: 0.20s (11.4%)
var.enqb: 100 runs, user: 0.07s (4.1%), sys: 0.00s (0.0%), total: 0.07s (4.0%)
var.unset: 100 runs, user: 0.09s (5.3%), sys: 0.00s (0.0%), total: 0.09s (5.1%)
var.seti: 100 runs, user: 0.17s (10.0%), sys: 0.00s (0.0%), total: 0.17s (9.7%)
var.setd: 100 runs, user: 0.11s (6.5%), sys: 0.00s (0.0%), total: 0.11s (6.2%)
var.setc: 100 runs, user: 0.22s (12.9%), sys: 0.00s (0.0%), total: 0.22s (12.5%)
var.setb: 100 runs, user: 0.21s (12.4%), sys: 0.00s (0.0%), total: 0.21s (11.9%)
bulletin.main: 20 runs, user: 2.14s (100.0%), sys: 0.06s (100.0%), total: 2.20s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.02s (0.9%), sys: 0.00s (0.0%), total: 0.02s (0.9%)
bulletin.decode_bufr: 20 runs, user: 0.65s (30.4%), sys: 0.05s (83.3%), total: 0.70s (31.8%)
bulletin.decode_crex_head: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
bulletin.decode_crex: 20 runs, user: 0.01s (0.5%), sys: 0.00s (0.0%), total: 0.01s (0.5%)
bulletin.encode_bufr: 20 runs, user: 1.46s (68.2%), sys: 0.01s (16.7%), total: 1.47s (66.8%)
bulletin.encode_crex: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150727 added benchmarks for conv
conv.main: 500 runs, user: 2.03s (100.0%), sys: 0.00s (-nan%), total: 2.03s (100.0%)
conv.conv_identity: 500 runs, user: 0.46s (22.7%), sys: 0.00s (-nan%), total: 0.46s (22.7%)
conv.conv_identity_longname: 500 runs, user: 0.21s (10.3%), sys: 0.00s (-nan%), total: 0.21s (10.3%)
conv.conv_linear: 500 runs, user: 0.60s (29.6%), sys: 0.00s (-nan%), total: 0.60s (29.6%)
conv.conv_linear_longname: 500 runs, user: 0.76s (37.4%), sys: 0.00s (-nan%), total: 0.76s (37.4%)
var.main: 100 runs, user: 1.67s (100.0%), sys: 0.08s (100.0%), total: 1.75s (100.0%)
var.new: 100 runs, user: 0.02s (1.2%), sys: 0.01s (12.5%), total: 0.03s (1.7%)
var.newi: 100 runs, user: 0.04s (2.4%), sys: 0.00s (0.0%), total: 0.04s (2.3%)
var.newd: 100 runs, user: 0.06s (3.6%), sys: 0.00s (0.0%), total: 0.06s (3.4%)
var.newc: 100 runs, user: 0.23s (13.8%), sys: 0.02s (25.0%), total: 0.25s (14.3%)
var.newb: 100 runs, user: 0.19s (11.4%), sys: 0.01s (12.5%), total: 0.20s (11.4%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.05s (3.0%), sys: 0.01s (12.5%), total: 0.06s (3.4%)
var.enqd: 100 runs, user: 0.03s (1.8%), sys: 0.01s (12.5%), total: 0.04s (2.3%)
var.enqc: 100 runs, user: 0.20s (12.0%), sys: 0.01s (12.5%), total: 0.21s (12.0%)
var.enqb: 100 runs, user: 0.04s (2.4%), sys: 0.00s (0.0%), total: 0.04s (2.3%)
var.unset: 100 runs, user: 0.13s (7.8%), sys: 0.00s (0.0%), total: 0.13s (7.4%)
var.seti: 100 runs, user: 0.07s (4.2%), sys: 0.01s (12.5%), total: 0.08s (4.6%)
var.setd: 100 runs, user: 0.19s (11.4%), sys: 0.00s (0.0%), total: 0.19s (10.9%)
var.setc: 100 runs, user: 0.22s (13.2%), sys: 0.00s (0.0%), total: 0.22s (12.6%)
var.setb: 100 runs, user: 0.20s (12.0%), sys: 0.00s (0.0%), total: 0.20s (11.4%)
bulletin.main: 20 runs, user: 2.11s (100.0%), sys: 0.08s (100.0%), total: 2.19s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.02s (0.9%), sys: 0.00s (0.0%), total: 0.02s (0.9%)
bulletin.decode_bufr: 20 runs, user: 0.61s (28.9%), sys: 0.06s (75.0%), total: 0.67s (30.6%)
bulletin.decode_crex_head: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
bulletin.decode_crex: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
bulletin.encode_bufr: 20 runs, user: 1.48s (70.1%), sys: 0.02s (25.0%), total: 1.50s (68.5%)
bulletin.encode_crex: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150712 after tidying up while porting bufr2netcdf to wreport3
var.main: 100 runs, user: 1.75s (100.0%), sys: 0.06s (100.0%), total: 1.81s (100.0%)
var.new: 100 runs, user: 0.01s (0.6%), sys: 0.00s (0.0%), total: 0.01s (0.6%)
var.newi: 100 runs, user: 0.01s (0.6%), sys: 0.00s (0.0%), total: 0.01s (0.6%)
var.newd: 100 runs, user: 0.04s (2.3%), sys: 0.00s (0.0%), total: 0.04s (2.2%)
var.newc: 100 runs, user: 0.23s (13.1%), sys: 0.00s (0.0%), total: 0.23s (12.7%)
var.newb: 100 runs, user: 0.24s (13.7%), sys: 0.02s (33.3%), total: 0.26s (14.4%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.01s (0.6%), sys: 0.00s (0.0%), total: 0.01s (0.6%)
var.enqd: 100 runs, user: 0.06s (3.4%), sys: 0.01s (16.7%), total: 0.07s (3.9%)
var.enqc: 100 runs, user: 0.18s (10.3%), sys: 0.03s (50.0%), total: 0.21s (11.6%)
var.enqb: 100 runs, user: 0.07s (4.0%), sys: 0.00s (0.0%), total: 0.07s (3.9%)
var.unset: 100 runs, user: 0.11s (6.3%), sys: 0.00s (0.0%), total: 0.11s (6.1%)
var.seti: 100 runs, user: 0.10s (5.7%), sys: 0.00s (0.0%), total: 0.10s (5.5%)
var.setd: 100 runs, user: 0.23s (13.1%), sys: 0.00s (0.0%), total: 0.23s (12.7%)
var.setc: 100 runs, user: 0.28s (16.0%), sys: 0.00s (0.0%), total: 0.28s (15.5%)
var.setb: 100 runs, user: 0.18s (10.3%), sys: 0.00s (0.0%), total: 0.18s (9.9%)
bulletin.main: 20 runs, user: 2.14s (100.0%), sys: 0.08s (100.0%), total: 2.22s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.02s (0.9%), sys: 0.00s (0.0%), total: 0.02s (0.9%)
bulletin.decode_bufr: 20 runs, user: 0.62s (29.0%), sys: 0.08s (100.0%), total: 0.70s (31.5%)
bulletin.decode_crex_head: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
bulletin.decode_crex: 20 runs, user: 0.01s (0.5%), sys: 0.00s (0.0%), total: 0.01s (0.5%)
bulletin.encode_bufr: 20 runs, user: 1.49s (69.6%), sys: 0.00s (0.0%), total: 1.49s (67.1%)
bulletin.encode_crex: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150712 after refactoring Var with a union
var.main: 100 runs, user: 1.74s (100.0%), sys: 0.08s (100.0%), total: 1.82s (100.0%)
var.new: 100 runs, user: 0.04s (2.3%), sys: 0.00s (0.0%), total: 0.04s (2.2%)
var.newi: 100 runs, user: 0.02s (1.1%), sys: 0.00s (0.0%), total: 0.02s (1.1%)
var.newd: 100 runs, user: 0.04s (2.3%), sys: 0.00s (0.0%), total: 0.04s (2.2%)
var.newc: 100 runs, user: 0.25s (14.4%), sys: 0.03s (37.5%), total: 0.28s (15.4%)
var.newb: 100 runs, user: 0.12s (6.9%), sys: 0.05s (62.5%), total: 0.17s (9.3%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.07s (4.0%), sys: 0.00s (0.0%), total: 0.07s (3.8%)
var.enqd: 100 runs, user: 0.08s (4.6%), sys: 0.00s (0.0%), total: 0.08s (4.4%)
var.enqc: 100 runs, user: 0.20s (11.5%), sys: 0.00s (0.0%), total: 0.20s (11.0%)
var.enqb: 100 runs, user: 0.11s (6.3%), sys: 0.00s (0.0%), total: 0.11s (6.0%)
var.unset: 100 runs, user: 0.12s (6.9%), sys: 0.00s (0.0%), total: 0.12s (6.6%)
var.seti: 100 runs, user: 0.14s (8.0%), sys: 0.00s (0.0%), total: 0.14s (7.7%)
var.setd: 100 runs, user: 0.14s (8.0%), sys: 0.00s (0.0%), total: 0.14s (7.7%)
var.setc: 100 runs, user: 0.26s (14.9%), sys: 0.00s (0.0%), total: 0.26s (14.3%)
var.setb: 100 runs, user: 0.15s (8.6%), sys: 0.00s (0.0%), total: 0.15s (8.2%)
bulletin.main: 20 runs, user: 2.38s (100.0%), sys: 0.24s (100.0%), total: 2.62s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.11s (4.6%), sys: 0.07s (29.2%), total: 0.18s (6.9%)
bulletin.decode_bufr: 20 runs, user: 0.72s (30.3%), sys: 0.15s (62.5%), total: 0.87s (33.2%)
bulletin.decode_crex_head: 20 runs, user: 0.01s (0.4%), sys: 0.00s (0.0%), total: 0.01s (0.4%)
bulletin.decode_crex: 20 runs, user: 0.01s (0.4%), sys: 0.00s (0.0%), total: 0.01s (0.4%)
bulletin.encode_bufr: 20 runs, user: 1.53s (64.3%), sys: 0.02s (8.3%), total: 1.55s (59.2%)
bulletin.encode_bufr: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150711 after a round of benchmarking and optimization of BufrInput
var.main: 100 runs, user: 2.59s (100.0%), sys: 0.19s (100.0%), total: 2.78s (100.0%)
var.new: 100 runs, user: 0.02s (0.8%), sys: 0.00s (0.0%), total: 0.02s (0.7%)
var.newi: 100 runs, user: 0.25s (9.7%), sys: 0.02s (10.5%), total: 0.27s (9.7%)
var.newd: 100 runs, user: 0.12s (4.6%), sys: 0.06s (31.6%), total: 0.18s (6.5%)
var.newc: 100 runs, user: 0.20s (7.7%), sys: 0.05s (26.3%), total: 0.25s (9.0%)
var.newb: 100 runs, user: 0.14s (5.4%), sys: 0.05s (26.3%), total: 0.19s (6.8%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.21s (8.1%), sys: 0.01s (5.3%), total: 0.22s (7.9%)
var.enqd: 100 runs, user: 0.19s (7.3%), sys: 0.00s (0.0%), total: 0.19s (6.8%)
var.enqc: 100 runs, user: 0.09s (3.5%), sys: 0.00s (0.0%), total: 0.09s (3.2%)
var.enqb: 100 runs, user: 0.06s (2.3%), sys: 0.00s (0.0%), total: 0.06s (2.2%)
var.unset: 100 runs, user: 0.06s (2.3%), sys: 0.00s (0.0%), total: 0.06s (2.2%)
var.seti: 100 runs, user: 0.29s (11.2%), sys: 0.00s (0.0%), total: 0.29s (10.4%)
var.setd: 100 runs, user: 0.50s (19.3%), sys: 0.00s (0.0%), total: 0.50s (18.0%)
var.setc: 100 runs, user: 0.25s (9.7%), sys: 0.00s (0.0%), total: 0.25s (9.0%)
var.setb: 100 runs, user: 0.20s (7.7%), sys: 0.00s (0.0%), total: 0.20s (7.2%)
bulletin.main: 20 runs, user: 3.10s (100.0%), sys: 0.26s (100.0%), total: 3.36s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.14s (4.5%), sys: 0.07s (26.9%), total: 0.21s (6.2%)
bulletin.decode_bufr: 20 runs, user: 1.16s (37.4%), sys: 0.18s (69.2%), total: 1.34s (39.9%)
bulletin.decode_crex_head: 20 runs, user: 0.03s (1.0%), sys: 0.00s (0.0%), total: 0.03s (0.9%)
bulletin.decode_crex: 20 runs, user: 0.01s (0.3%), sys: 0.00s (0.0%), total: 0.01s (0.3%)
bulletin.encode_bufr: 20 runs, user: 1.74s (56.1%), sys: 0.01s (3.8%), total: 1.75s (52.1%)
bulletin.encode_bufr: 20 runs, user: 0.02s (0.6%), sys: 0.00s (0.0%), total: 0.02s (0.6%)

 * 20150711 end bulletin review/refactoring
var.main: 100 runs, user: 2.63s (100.0%), sys: 0.14s (100.0%), total: 2.77s (100.0%)
var.new: 100 runs, user: 0.01s (0.4%), sys: 0.00s (0.0%), total: 0.01s (0.4%)
var.newi: 100 runs, user: 0.24s (9.1%), sys: 0.01s (7.1%), total: 0.25s (9.0%)
var.newd: 100 runs, user: 0.20s (7.6%), sys: 0.03s (21.4%), total: 0.23s (8.3%)
var.newc: 100 runs, user: 0.25s (9.5%), sys: 0.02s (14.3%), total: 0.27s (9.7%)
var.newb: 100 runs, user: 0.12s (4.6%), sys: 0.02s (14.3%), total: 0.14s (5.1%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.19s (7.2%), sys: 0.04s (28.6%), total: 0.23s (8.3%)
var.enqd: 100 runs, user: 0.19s (7.2%), sys: 0.00s (0.0%), total: 0.19s (6.9%)
var.enqc: 100 runs, user: 0.11s (4.2%), sys: 0.00s (0.0%), total: 0.11s (4.0%)
var.enqb: 100 runs, user: 0.04s (1.5%), sys: 0.00s (0.0%), total: 0.04s (1.4%)
var.unset: 100 runs, user: 0.14s (5.3%), sys: 0.01s (7.1%), total: 0.15s (5.4%)
var.seti: 100 runs, user: 0.34s (12.9%), sys: 0.01s (7.1%), total: 0.35s (12.6%)
var.setd: 100 runs, user: 0.35s (13.3%), sys: 0.00s (0.0%), total: 0.35s (12.6%)
var.setc: 100 runs, user: 0.25s (9.5%), sys: 0.00s (0.0%), total: 0.25s (9.0%)
var.setb: 100 runs, user: 0.20s (7.6%), sys: 0.00s (0.0%), total: 0.20s (7.2%)
bulletin.main: 20 runs, user: 3.55s (100.0%), sys: 0.28s (100.0%), total: 3.83s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.06s (1.7%), sys: 0.02s (7.1%), total: 0.08s (2.1%)
bulletin.decode_bufr: 20 runs, user: 1.65s (46.5%), sys: 0.25s (89.3%), total: 1.90s (49.6%)
bulletin.decode_crex_head: 20 runs, user: 0.05s (1.4%), sys: 0.00s (0.0%), total: 0.05s (1.3%)
bulletin.decode_crex: 20 runs, user: 0.02s (0.6%), sys: 0.00s (0.0%), total: 0.02s (0.5%)
bulletin.encode_bufr: 20 runs, user: 1.77s (49.9%), sys: 0.01s (3.6%), total: 1.78s (46.5%)
bulletin.encode_bufr: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150710 refactored bulletins
var.main: 100 runs, user: 2.56s (100.0%), sys: 0.12s (100.0%), total: 2.68s (100.0%)
var.new: 100 runs, user: 0.03s (1.2%), sys: 0.00s (0.0%), total: 0.03s (1.1%)
var.newi: 100 runs, user: 0.21s (8.2%), sys: 0.00s (0.0%), total: 0.21s (7.8%)
var.newd: 100 runs, user: 0.25s (9.8%), sys: 0.05s (41.7%), total: 0.30s (11.2%)
var.newc: 100 runs, user: 0.21s (8.2%), sys: 0.01s (8.3%), total: 0.22s (8.2%)
var.newb: 100 runs, user: 0.12s (4.7%), sys: 0.03s (25.0%), total: 0.15s (5.6%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.19s (7.4%), sys: 0.02s (16.7%), total: 0.21s (7.8%)
var.enqd: 100 runs, user: 0.22s (8.6%), sys: 0.00s (0.0%), total: 0.22s (8.2%)
var.enqc: 100 runs, user: 0.06s (2.3%), sys: 0.00s (0.0%), total: 0.06s (2.2%)
var.enqb: 100 runs, user: 0.02s (0.8%), sys: 0.00s (0.0%), total: 0.02s (0.7%)
var.unset: 100 runs, user: 0.11s (4.3%), sys: 0.00s (0.0%), total: 0.11s (4.1%)
var.seti: 100 runs, user: 0.30s (11.7%), sys: 0.00s (0.0%), total: 0.30s (11.2%)
var.setd: 100 runs, user: 0.42s (16.4%), sys: 0.00s (0.0%), total: 0.42s (15.7%)
var.setc: 100 runs, user: 0.25s (9.8%), sys: 0.00s (0.0%), total: 0.25s (9.3%)
var.setb: 100 runs, user: 0.17s (6.6%), sys: 0.01s (8.3%), total: 0.18s (6.7%)
bulletin.main: 20 runs, user: 3.83s (100.0%), sys: 0.13s (100.0%), total: 3.96s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.13s (3.4%), sys: 0.04s (30.8%), total: 0.17s (4.3%)
bulletin.decode_bufr: 20 runs, user: 1.93s (50.4%), sys: 0.07s (53.8%), total: 2.00s (50.5%)
bulletin.decode_crex_head: 20 runs, user: 0.01s (0.3%), sys: 0.01s (7.7%), total: 0.02s (0.5%)
bulletin.decode_crex: 20 runs, user: 0.01s (0.3%), sys: 0.00s (0.0%), total: 0.01s (0.3%)
bulletin.encode_bufr: 20 runs, user: 1.74s (45.4%), sys: 0.01s (7.7%), total: 1.75s (44.2%)
bulletin.encode_bufr: 20 runs, user: 0.01s (0.3%), sys: 0.00s (0.0%), total: 0.01s (0.3%)

 * 20150630 shortcutting enqd to enqc when Integer
var.main: 100 runs, user: 2.58s (100.0%), sys: 0.11s (100.0%), total: 2.69s (100.0%)
var.new: 100 runs, user: 0.03s (1.2%), sys: 0.00s (0.0%), total: 0.03s (1.1%)
var.newi: 100 runs, user: 0.30s (11.6%), sys: 0.01s (9.1%), total: 0.31s (11.5%)
var.newd: 100 runs, user: 0.12s (4.7%), sys: 0.04s (36.4%), total: 0.16s (5.9%)
var.newc: 100 runs, user: 0.24s (9.3%), sys: 0.00s (0.0%), total: 0.24s (8.9%)
var.newb: 100 runs, user: 0.21s (8.1%), sys: 0.03s (27.3%), total: 0.24s (8.9%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.12s (4.7%), sys: 0.03s (27.3%), total: 0.15s (5.6%)
var.enqd: 100 runs, user: 0.18s (7.0%), sys: 0.00s (0.0%), total: 0.18s (6.7%)
var.enqc: 100 runs, user: 0.09s (3.5%), sys: 0.00s (0.0%), total: 0.09s (3.3%)
var.enqb: 100 runs, user: 0.05s (1.9%), sys: 0.00s (0.0%), total: 0.05s (1.9%)
var.unset: 100 runs, user: 0.16s (6.2%), sys: 0.00s (0.0%), total: 0.16s (5.9%)
var.seti: 100 runs, user: 0.20s (7.8%), sys: 0.00s (0.0%), total: 0.20s (7.4%)
var.setd: 100 runs, user: 0.48s (18.6%), sys: 0.00s (0.0%), total: 0.48s (17.8%)
var.setc: 100 runs, user: 0.20s (7.8%), sys: 0.00s (0.0%), total: 0.20s (7.4%)
var.setb: 100 runs, user: 0.19s (7.4%), sys: 0.00s (0.0%), total: 0.19s (7.1%)
bulletin.main: 20 runs, user: 3.80s (100.0%), sys: 0.13s (100.0%), total: 3.93s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.10s (2.6%), sys: 0.04s (30.8%), total: 0.14s (3.6%)
bulletin.decode_bufr: 20 runs, user: 1.98s (52.1%), sys: 0.09s (69.2%), total: 2.07s (52.7%)
bulletin.decode_crex_head: 20 runs, user: 0.03s (0.8%), sys: 0.00s (0.0%), total: 0.03s (0.8%)
bulletin.decode_crex: 20 runs, user: 0.01s (0.3%), sys: 0.00s (0.0%), total: 0.01s (0.3%)
bulletin.encode_bufr: 20 runs, user: 1.67s (43.9%), sys: 0.00s (0.0%), total: 1.67s (42.5%)
bulletin.encode_bufr: 20 runs, user: 0.01s (0.3%), sys: 0.00s (0.0%), total: 0.01s (0.3%)

 * 20150630 fast string-to-integer in enqd and enqi
var.main: 100 runs, user: 2.54s (100.0%), sys: 0.18s (100.0%), total: 2.72s (100.0%)
var.new: 100 runs, user: 0.06s (2.4%), sys: 0.00s (0.0%), total: 0.06s (2.2%)
var.newi: 100 runs, user: 0.20s (7.9%), sys: 0.01s (5.6%), total: 0.21s (7.7%)
var.newd: 100 runs, user: 0.21s (8.3%), sys: 0.03s (16.7%), total: 0.24s (8.8%)
var.newc: 100 runs, user: 0.19s (7.5%), sys: 0.05s (27.8%), total: 0.24s (8.8%)
var.newb: 100 runs, user: 0.15s (5.9%), sys: 0.08s (44.4%), total: 0.23s (8.5%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.20s (7.9%), sys: 0.01s (5.6%), total: 0.21s (7.7%)
var.enqd: 100 runs, user: 0.19s (7.5%), sys: 0.00s (0.0%), total: 0.19s (7.0%)
var.enqc: 100 runs, user: 0.08s (3.1%), sys: 0.00s (0.0%), total: 0.08s (2.9%)
var.enqb: 100 runs, user: 0.04s (1.6%), sys: 0.00s (0.0%), total: 0.04s (1.5%)
var.unset: 100 runs, user: 0.13s (5.1%), sys: 0.00s (0.0%), total: 0.13s (4.8%)
var.seti: 100 runs, user: 0.27s (10.6%), sys: 0.00s (0.0%), total: 0.27s (9.9%)
var.setd: 100 runs, user: 0.42s (16.5%), sys: 0.00s (0.0%), total: 0.42s (15.4%)
var.setc: 100 runs, user: 0.23s (9.1%), sys: 0.00s (0.0%), total: 0.23s (8.5%)
var.setb: 100 runs, user: 0.17s (6.7%), sys: 0.00s (0.0%), total: 0.17s (6.2%)
bulletin.main: 20 runs, user: 3.81s (100.0%), sys: 0.12s (100.0%), total: 3.93s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.12s (3.1%), sys: 0.04s (33.3%), total: 0.16s (4.1%)
bulletin.decode_bufr: 20 runs, user: 1.99s (52.2%), sys: 0.04s (33.3%), total: 2.03s (51.7%)
bulletin.decode_crex_head: 20 runs, user: 0.02s (0.5%), sys: 0.01s (8.3%), total: 0.03s (0.8%)
bulletin.decode_crex: 20 runs, user: 0.01s (0.3%), sys: 0.01s (8.3%), total: 0.02s (0.5%)
bulletin.encode_bufr: 20 runs, user: 1.67s (43.8%), sys: 0.02s (16.7%), total: 1.69s (43.0%)
bulletin.encode_bufr: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150629 fast integer-to-string in setd and seti
var.main: 100 runs, user: 3.26s (100.0%), sys: 0.15s (100.0%), total: 3.41s (100.0%)
var.new: 100 runs, user: 0.01s (0.3%), sys: 0.00s (0.0%), total: 0.01s (0.3%)
var.newi: 100 runs, user: 0.17s (5.2%), sys: 0.01s (6.7%), total: 0.18s (5.3%)
var.newd: 100 runs, user: 0.17s (5.2%), sys: 0.01s (6.7%), total: 0.18s (5.3%)
var.newc: 100 runs, user: 0.27s (8.3%), sys: 0.04s (26.7%), total: 0.31s (9.1%)
var.newb: 100 runs, user: 0.13s (4.0%), sys: 0.07s (46.7%), total: 0.20s (5.9%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.56s (17.2%), sys: 0.02s (13.3%), total: 0.58s (17.0%)
var.enqd: 100 runs, user: 0.69s (21.2%), sys: 0.00s (0.0%), total: 0.69s (20.2%)
var.enqc: 100 runs, user: 0.03s (0.9%), sys: 0.00s (0.0%), total: 0.03s (0.9%)
var.enqb: 100 runs, user: 0.03s (0.9%), sys: 0.00s (0.0%), total: 0.03s (0.9%)
var.unset: 100 runs, user: 0.04s (1.2%), sys: 0.00s (0.0%), total: 0.04s (1.2%)
var.seti: 100 runs, user: 0.27s (8.3%), sys: 0.00s (0.0%), total: 0.27s (7.9%)
var.setd: 100 runs, user: 0.40s (12.3%), sys: 0.00s (0.0%), total: 0.40s (11.7%)
var.setc: 100 runs, user: 0.28s (8.6%), sys: 0.00s (0.0%), total: 0.28s (8.2%)
var.setb: 100 runs, user: 0.21s (6.4%), sys: 0.00s (0.0%), total: 0.21s (6.2%)
bulletin.main: 20 runs, user: 3.78s (100.0%), sys: 0.12s (100.0%), total: 3.90s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.12s (3.2%), sys: 0.05s (41.7%), total: 0.17s (4.4%)
bulletin.decode_bufr: 20 runs, user: 1.97s (52.1%), sys: 0.04s (33.3%), total: 2.01s (51.5%)
bulletin.decode_crex_head: 20 runs, user: 0.01s (0.3%), sys: 0.00s (0.0%), total: 0.01s (0.3%)
bulletin.decode_crex: 20 runs, user: 0.02s (0.5%), sys: 0.01s (8.3%), total: 0.03s (0.8%)
bulletin.encode_bufr: 20 runs, user: 1.66s (43.9%), sys: 0.02s (16.7%), total: 1.68s (43.1%)
bulletin.encode_bufr: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150628 added m_isset
var.main: 100 runs, user: 4.54s (100.0%), sys: 0.17s (100.0%), total: 4.71s (100.0%)
var.new: 100 runs, user: 0.04s (0.9%), sys: 0.00s (0.0%), total: 0.04s (0.8%)
var.newi: 100 runs, user: 0.21s (4.6%), sys: 0.02s (11.8%), total: 0.23s (4.9%)
var.newd: 100 runs, user: 0.36s (7.9%), sys: 0.05s (29.4%), total: 0.41s (8.7%)
var.newc: 100 runs, user: 0.21s (4.6%), sys: 0.02s (11.8%), total: 0.23s (4.9%)
var.newb: 100 runs, user: 0.12s (2.6%), sys: 0.05s (29.4%), total: 0.17s (3.6%)
var.isset: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.enqi: 100 runs, user: 0.50s (11.0%), sys: 0.03s (17.6%), total: 0.53s (11.3%)
var.enqd: 100 runs, user: 0.59s (13.0%), sys: 0.00s (0.0%), total: 0.59s (12.5%)
var.enqc: 100 runs, user: 0.06s (1.3%), sys: 0.00s (0.0%), total: 0.06s (1.3%)
var.enqb: 100 runs, user: 0.03s (0.7%), sys: 0.00s (0.0%), total: 0.03s (0.6%)
var.unset: 100 runs, user: 0.12s (2.6%), sys: 0.00s (0.0%), total: 0.12s (2.5%)
var.seti: 100 runs, user: 0.78s (17.2%), sys: 0.00s (0.0%), total: 0.78s (16.6%)
var.setd: 100 runs, user: 0.98s (21.6%), sys: 0.00s (0.0%), total: 0.98s (20.8%)
var.setc: 100 runs, user: 0.27s (5.9%), sys: 0.00s (0.0%), total: 0.27s (5.7%)
var.setb: 100 runs, user: 0.27s (5.9%), sys: 0.00s (0.0%), total: 0.27s (5.7%)
bulletin.main: 20 runs, user: 3.84s (100.0%), sys: 0.12s (100.0%), total: 3.96s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.10s (2.6%), sys: 0.09s (75.0%), total: 0.19s (4.8%)
bulletin.decode_bufr: 20 runs, user: 2.01s (52.3%), sys: 0.02s (16.7%), total: 2.03s (51.3%)
bulletin.decode_crex_head: 20 runs, user: 0.01s (0.3%), sys: 0.00s (0.0%), total: 0.01s (0.3%)
bulletin.decode_crex: 20 runs, user: 0.03s (0.8%), sys: 0.00s (0.0%), total: 0.03s (0.8%)
bulletin.encode_bufr: 20 runs, user: 1.69s (44.0%), sys: 0.01s (8.3%), total: 1.70s (42.9%)
bulletin.encode_bufr: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150628 benchmark bulletin encode/decode
var.main: 100 runs, user: 5.14s (100.0%), sys: 0.14s (100.0%), total: 5.28s (100.0%)
var.new: 100 runs, user: 0.01s (0.2%), sys: 0.00s (0.0%), total: 0.01s (0.2%)
var.newi: 100 runs, user: 0.16s (3.1%), sys: 0.03s (21.4%), total: 0.19s (3.6%)
var.newd: 100 runs, user: 0.45s (8.8%), sys: 0.03s (21.4%), total: 0.48s (9.1%)
var.newc: 100 runs, user: 0.22s (4.3%), sys: 0.03s (21.4%), total: 0.25s (4.7%)
var.newb: 100 runs, user: 0.11s (2.1%), sys: 0.02s (14.3%), total: 0.13s (2.5%)
var.isset: 100 runs, user: 0.06s (1.2%), sys: 0.00s (0.0%), total: 0.06s (1.1%)
var.enqi: 100 runs, user: 0.60s (11.7%), sys: 0.02s (14.3%), total: 0.62s (11.7%)
var.enqd: 100 runs, user: 0.54s (10.5%), sys: 0.00s (0.0%), total: 0.54s (10.2%)
var.enqc: 100 runs, user: 0.03s (0.6%), sys: 0.00s (0.0%), total: 0.03s (0.6%)
var.enqb: 100 runs, user: 0.03s (0.6%), sys: 0.00s (0.0%), total: 0.03s (0.6%)
var.unset: 100 runs, user: 0.30s (5.8%), sys: 0.01s (7.1%), total: 0.31s (5.9%)
var.seti: 100 runs, user: 0.89s (17.3%), sys: 0.00s (0.0%), total: 0.89s (16.9%)
var.setd: 100 runs, user: 1.07s (20.8%), sys: 0.00s (0.0%), total: 1.07s (20.3%)
var.setc: 100 runs, user: 0.46s (8.9%), sys: 0.00s (0.0%), total: 0.46s (8.7%)
var.setb: 100 runs, user: 0.21s (4.1%), sys: 0.00s (0.0%), total: 0.21s (4.0%)
bulletin.main: 20 runs, user: 3.77s (100.0%), sys: 0.14s (100.0%), total: 3.91s (100.0%)
bulletin.decode_bufr_head: 20 runs, user: 0.13s (3.4%), sys: 0.05s (35.7%), total: 0.18s (4.6%)
bulletin.decode_bufr: 20 runs, user: 1.89s (50.1%), sys: 0.07s (50.0%), total: 1.96s (50.1%)
bulletin.decode_crex_head: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
bulletin.decode_crex: 20 runs, user: 0.02s (0.5%), sys: 0.01s (7.1%), total: 0.03s (0.8%)
bulletin.encode_bufr: 20 runs, user: 1.73s (45.9%), sys: 0.01s (7.1%), total: 1.74s (44.5%)
bulletin.encode_bufr: 20 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)

 * 20150628 fully implemented binary operations fully implemented binary operations
var.main: 100 runs, user: 5.17s (100.0%), sys: 0.14s (100.0%), total: 5.31s (100.0%)
var.new: 100 runs, user: 0.01s (0.2%), sys: 0.00s (0.0%), total: 0.01s (0.2%)
var.newi: 100 runs, user: 0.19s (3.7%), sys: 0.01s (7.1%), total: 0.20s (3.8%)
var.newd: 100 runs, user: 0.36s (7.0%), sys: 0.07s (50.0%), total: 0.43s (8.1%)
var.newc: 100 runs, user: 0.23s (4.4%), sys: 0.03s (21.4%), total: 0.26s (4.9%)
var.newb: 100 runs, user: 0.19s (3.7%), sys: 0.01s (7.1%), total: 0.20s (3.8%)
var.isset: 100 runs, user: 0.09s (1.7%), sys: 0.00s (0.0%), total: 0.09s (1.7%)
var.enqi: 100 runs, user: 0.50s (9.7%), sys: 0.02s (14.3%), total: 0.52s (9.8%)
var.enqd: 100 runs, user: 0.58s (11.2%), sys: 0.00s (0.0%), total: 0.58s (10.9%)
var.enqc: 100 runs, user: 0.03s (0.6%), sys: 0.00s (0.0%), total: 0.03s (0.6%)
var.enqb: 100 runs, user: 0.09s (1.7%), sys: 0.00s (0.0%), total: 0.09s (1.7%)
var.unset: 100 runs, user: 0.25s (4.8%), sys: 0.00s (0.0%), total: 0.25s (4.7%)
var.seti: 100 runs, user: 0.82s (15.9%), sys: 0.00s (0.0%), total: 0.82s (15.4%)
var.setd: 100 runs, user: 1.11s (21.5%), sys: 0.00s (0.0%), total: 1.11s (20.9%)
var.setc: 100 runs, user: 0.50s (9.7%), sys: 0.00s (0.0%), total: 0.50s (9.4%)
var.setb: 100 runs, user: 0.22s (4.3%), sys: 0.00s (0.0%), total: 0.22s (4.1%)

 * 20150628 Vartype
var.main: 100 runs, user: 5.13s (100.0%), sys: 0.15s (100.0%), total: 5.28s (100.0%)
var.new: 100 runs, user: 0.00s (0.0%), sys: 0.00s (0.0%), total: 0.00s (0.0%)
var.newi: 100 runs, user: 0.26s (5.1%), sys: 0.03s (20.0%), total: 0.29s (5.5%)
var.newd: 100 runs, user: 0.30s (5.8%), sys: 0.02s (13.3%), total: 0.32s (6.1%)
var.newc: 100 runs, user: 0.26s (5.1%), sys: 0.05s (33.3%), total: 0.31s (5.9%)
var.newb: 100 runs, user: 0.08s (1.6%), sys: 0.05s (33.3%), total: 0.13s (2.5%)
var.isset: 100 runs, user: 0.07s (1.4%), sys: 0.00s (0.0%), total: 0.07s (1.3%)
var.enqi: 100 runs, user: 0.68s (13.3%), sys: 0.00s (0.0%), total: 0.68s (12.9%)
var.enqd: 100 runs, user: 0.47s (9.2%), sys: 0.00s (0.0%), total: 0.47s (8.9%)
var.enqc: 100 runs, user: 0.02s (0.4%), sys: 0.00s (0.0%), total: 0.02s (0.4%)
var.enqb: 100 runs, user: 0.05s (1.0%), sys: 0.00s (0.0%), total: 0.05s (0.9%)
var.unset: 100 runs, user: 0.28s (5.5%), sys: 0.00s (0.0%), total: 0.28s (5.3%)
var.seti: 100 runs, user: 0.93s (18.1%), sys: 0.00s (0.0%), total: 0.93s (17.6%)
var.setd: 100 runs, user: 0.98s (19.1%), sys: 0.00s (0.0%), total: 0.98s (18.6%)
var.setc: 100 runs, user: 0.46s (9.0%), sys: 0.00s (0.0%), total: 0.46s (8.7%)
var.setb: 100 runs, user: 0.28s (5.5%), sys: 0.00s (0.0%), total: 0.28s (5.3%)

 * 20150627 initial
var.main: 100 runs, user: 4.96s (100.0%), sys: 0.21s (100.0%), total: 5.17s (100.0%)
var.new: 100 runs, user: 0.02s (0.4%), sys: 0.00s (0.0%), total: 0.02s (0.4%)
var.newi: 100 runs, user: 0.24s (4.8%), sys: 0.01s (4.8%), total: 0.25s (4.8%)
var.newd: 100 runs, user: 0.33s (6.7%), sys: 0.05s (23.8%), total: 0.38s (7.4%)
var.newc: 100 runs, user: 0.18s (3.6%), sys: 0.06s (28.6%), total: 0.24s (4.6%)
var.newb: 100 runs, user: 0.15s (3.0%), sys: 0.05s (23.8%), total: 0.20s (3.9%)
var.isset: 100 runs, user: 0.06s (1.2%), sys: 0.02s (9.5%), total: 0.08s (1.5%)
var.enqi: 100 runs, user: 0.53s (10.7%), sys: 0.01s (4.8%), total: 0.54s (10.4%)
var.enqd: 100 runs, user: 0.56s (11.3%), sys: 0.00s (0.0%), total: 0.56s (10.8%)
var.enqc: 100 runs, user: 0.03s (0.6%), sys: 0.00s (0.0%), total: 0.03s (0.6%)
var.enqb: 100 runs, user: 0.01s (0.2%), sys: 0.00s (0.0%), total: 0.01s (0.2%)
var.unset: 100 runs, user: 0.24s (4.8%), sys: 0.01s (4.8%), total: 0.25s (4.8%)
var.seti: 100 runs, user: 0.92s (18.5%), sys: 0.00s (0.0%), total: 0.92s (17.8%)
var.setd: 100 runs, user: 0.98s (19.8%), sys: 0.00s (0.0%), total: 0.98s (19.0%)
var.setc: 100 runs, user: 0.38s (7.7%), sys: 0.00s (0.0%), total: 0.38s (7.4%)
var.setb: 100 runs, user: 0.33s (6.7%), sys: 0.00s (0.0%), total: 0.33s (6.4%)
