• Show log

    Commit

  • Hash : 68e69b7d
    Author : Ran Benita
    Date : 2021-03-28T20:22:54

    keysym: use a perfect hash function for case sensitive xkb_keysym_from_name
    
    In 7d84809fdccbb5898d0838849ec7c321410182d5 I added a fast path for the
    case-sensitive case, but it is still slowing down Compose parsing.
    
    Instead of the binary search, use a perfect hash function, computed with
    a simple python module I found (vendored).
    
    It is faster -- perf diff is:
    
       Baseline  Delta Abs  Shared Object      Symbol
       ........  .........  .................  ...................................
    
         22.35%    -14.04%  libc-2.33.so       [.] __strcmp_avx2
         16.75%    +10.28%  bench-compose      [.] xkb_keysym_from_name
         20.72%     +2.40%  bench-compose      [.] parse.constprop.0
          2.29%     -1.97%  bench-compose      [.] strcmp@plt
          2.56%     +1.81%  bench-compose      [.] resolve_name
          2.37%     +0.92%  libc-2.33.so       [.] __GI_____strtoull_l_internal
         26.19%     -0.63%  bench-compose      [.] lex
          1.45%     +0.56%  libc-2.33.so       [.] __memchr_avx2
          1.13%     -0.31%  libc-2.33.so       [.] __strcpy_avx2
    
    Also reduces the binary size:
    
    Before:
    
          text    data     bss     dec     hex filename
        341111    5064       8  346183   54847 build/libxkbcommon.so.0.0.0
    
    After:
    
          text    data     bss     dec     hex filename
        330215    5064       8  335287   51db7 build/libxkbcommon.so.0.0.0
    
    Note however that it's still larger than before 7d84809fdccbb5898d08388:
    
          text    data     bss     dec     hex filename
        320617    5168       8  325793   4f8a1 build/libxkbcommon.so.0.0.0
    
    Signed-off-by: Ran Benita <ran@unusedvar.com>
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/libxkbcommon.git
    Git SSH git@git.kmx.io:kc3-lang/libxkbcommon.git
    Public access ? public
    Description

    keymap handling library for toolkits and window systems

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg thodg_l
    Tags