/ src / warn.c
warn.c
 1  #include <stdio.h>
 2  int main(int argc, char *argv[]) {
 3     for(int i=1; i < argc;  i++){
 4        fprintf(stderr, "%s", argv[i]);
 5        if(i<argc-1) fprintf(stderr, " ");
 6     }
 7     fprintf(stderr, "\n");
 8     return 0;
 9  }
10  
11  /*
12   why c?
13   because it's easy enough to code :)
14   binary is 5x larger (20K) and only runs 2-4x as fast as dash/bash (echo "$@" >2) or perl
15   warning is unlikely to ever be the tight loop performace bottleneck.
16   so this just for fun
17  
18  
19  hyperfine -N --export-csv >(cat) warn test me
20    Time (mean ± σ):       1.3 ms ±   0.2 ms    [User: 0.8 ms, System: 0.4 ms]
21    Range (min … max):     1.1 ms …   3.4 ms    1676 runs
22  hyperfine -N --export-csv >(cat) warn.dash test me
23    Time (mean ± σ):       2.4 ms ±   0.3 ms    [User: 1.0 ms, System: 1.2 ms]
24    Range (min … max):     2.1 ms …   5.7 ms    953 runs
25  hyperfine -N --export-csv >(cat) warn.pl test me # print STDERR "@ARGV\n";
26    Time (mean ± σ):       2.8 ms ±   0.3 ms    [User: 1.3 ms, System: 1.3 ms]
27    Range (min … max):     2.5 ms …   5.8 ms    601 runs
28  hyperfine -N --export-csv >(cat) warn.bash test me 
29    Time (mean ± σ):       5.1 ms ±   0.8 ms    [User: 2.8 ms, System: 2.1 ms]
30    Range (min … max):     4.5 ms …  10.2 ms    523 runs
31   
32  
33  command   ,mean                ,stddev              ,median     ,user                 ,system,min,max
34  warn     ,0.0012507016527446308,0.000219916101220486,0.001201705,0.0007765029832935562,0.0003650011933174228,0.00106886,0.00343389
35  warn.dash,0.0024232519223504763,0.000342939673951839,0.002344727,0.0010063567681007338,0.001242098635886673,0.002070156,0.005659354
36  warn.bash,0.005108132988527722,0.0007640626443461939,0.004898110000000001,0.0028141108986615678,0.002057764818355641,0.004495664,0.01020713
37  warn.pl  ,0.0028228331098169713,0.0003460886393552879,0.0027432650000000004,0.001313840266222962,0.0013080066555740425,0.002519842,0.005833629000000001
38  
39  
40  */