"README.md" did not exist on "7f83927c95b4ad15cba8f7349214e473a130d2ff"
intel/perf: Store indices to strings rather than pointers
The compiler does a good job of deduplicating strings already, but we can eliminate the pointers to each string by combining the strings into a single char array and storing only an index into that array. The longest of the char arrays is the descriptions array, which is a little over 45 KiB, so still under MSVC's 64 KiB string literal limit [0]. Because the string length is under 64 KiB we can use uint16_t as the index type, which roughly doubles our savings as compared to an int. This cuts 77 KiB from iris_dri.so (0.5%) and libvulkan_intel.so (0.9%). text data bss dec hex filename 926811 25920 0 952731 e899b meson-generated_.._intel_perf_metrics.c.o (before) 924401 0 0 924401 e1af1 meson-generated_.._intel_perf_metrics.c.o (after) text data bss dec hex filename 14190852 391628 210004 14792484 e1b724 iris_dri.so (before) 14137732 365708 210004 14713444 e08264 iris_dri.so (after) text data bss dec hex filename 8184097 240184 22820 8447101 80e47d libvulkan_intel.so (before) 8131009 214264 22820 8368093 7fafdd libvulkan_intel.so (after) relinfo: iris_dri.so (before): 17765 relocations, 17545 relative (98%), 452 PLT entries, 1 for local syms (0%), 0 users iris_dri.so (after) : 15605 relocations, 15385 relative (98%), 452 PLT entries, 1 for local syms (0%), 0 users libvulkan_intel.so (before): 10720 relocations, 6989 relative (65%), 355 PLT entries, 1 for local syms (0%), 0 users libvulkan_intel.so (after) : 8560 relocations, 4829 relative (56%), 355 PLT entries, 1 for local syms (0%), 0 users [0] https://docs.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp?view=msvc-170&viewFallbackFrom=vs-2019 Reviewed-by:Lionel Landwerlin <lionel.g.landwerlin@intel.com> (cherry picked from commit 6c0246dc) Part-of: <mesa/mesa!16405>
Loading
Please register or sign in to comment