• Ian Rogers's avatar
    tools api io: Move filling the io buffer to its own function · d163d602
    Ian Rogers authored
    In general a read fills 4kb so filling the buffer is a 1 in 4096
    operation, move it out of the io__get_char function to avoid some
    checking overhead and to better hint the function is good to inline.
    
    For perf's IO intensive internal (non-rigorous) benchmarks there's a
    small improvement to kallsyms-parsing with a default build.
    
    Before:
    ```
    $ perf bench internals all
    Computing performance of single threaded perf event synthesis by
    synthesizing events on the perf process itself:
      Average synthesis took: 146.322 usec (+- 0.305 usec)
      Average num. events: 61.000 (+- 0.000)
      Average time per event 2.399 usec
      Average data synthesis took: 145.056 usec (+- 0.155 usec)
      Average num. events: 329.000 (+- 0.000)
      Average time per event 0.441 usec
    
      Average kallsyms__parse took: 162.313 ms (+- 0.599 ms)
    ...
    Computing performance of sysfs PMU event scan for 100 times
      Average core PMU scanning took: 53.720 usec (+- 7.823 usec)
      Average PMU scanning took: 375.145 usec (+- 23.974 usec)
    ```
    After:
    ```
    $ perf bench internals all
    Computing performance of single threaded perf event synthesis by
    synthesizing events on the perf process itself:
      Average synthesis took: 127.829 usec (+- 0.079 usec)
      Average num. events: 61.000 (+- 0.000)
      Average time per event 2.096 usec
      Average data synthesis took: 133.652 usec (+- 0.101 usec)
      Average num. events: 327.000 (+- 0.000)
      Average time per event 0.409 usec
    
      Average kallsyms__parse took: 150.415 ms (+- 0.313 ms)
    ...
    Computing performance of sysfs PMU event scan for 100 times
      Average core PMU scanning took: 47.790 usec (+- 1.178 usec)
      Average PMU scanning took: 376.945 usec (+- 23.683 usec)
    ```
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/r/20240519181716.4088459-1-irogers@google.com
    d163d602
io.h 4.22 KB