I made today simple script to estimate size overhead due types duplication. This is hard task for C++ - bcs some types can have specialized (or partially specialized) template parameters and sure this types should be considered as different. But for plain C we can safely get all high-level types and assume that types with the same name and declared at the same line and column are equal
Next I ran this script on objdump -g dump for linux kernel. Script gave me digit 252741370
Lets find size of .debug_info section
objdump -h vmlinux | grep debug_info
Size is 0x118205ec = 293733868
35 .debug_info 118205ec 0000000000000000 0000000000000000 03037230 2**0
And finally lets calculate share of unnecessary info: 252741370 / 293733868 = 0,8604
I am shocked - 86%!!! Looks like hd manufacturers conspiracy
Update: for C++ I made another version of this script to support namespaces and got following results:
- cc1 from gcc 111858917 / 130272407 = 0,8587
- gdb 105034993 / 139899598 = 0,7508
- llvm-dwarfdump 194031570 / 263053224 = 0,7376
Комментариев нет:
Отправить комментарий