The charset tables etc in libfontconfig aren't constant because they need to be touched at runtime. This leads to a large data section of the binary. $ size /usr/lib/libfontconfig.so text data bss dec hex filename 138421 31420 644 170485 299f5 /usr/lib/libfontconfig.so ^^^^^ I'll attach a series of patches that trim the data section down to < 3K. My figures say that saves about 16 KB in every process that loads libfontconfig.
Created attachment 10001 [details] [review] 0001-Put-language-table-in-read-only-memory.patch
Created attachment 10002 [details] [review] 0002-Store-glyph-names-in-read-only-memory.patch
Created attachment 10003 [details] [review] 0003-Store-FcCodePageRange-in-read-only-memory.patch
Created attachment 10004 [details] [review] 0004-Store-FcNoticeFoundries-in-read-only-memory.patch
Created attachment 10005 [details] [review] 0005-Store-FcVendorFoundries-in-read-only-memory.patch
Below is cut from /proc/PID/smaps of gedit process . Although data section of the binary image is huge, the Private_Dirty of the data section is only 4kB and most pages of it are shared. The Linux system will not allocate a new page for data section until a page of data section become dirty (be written), and those strings will not be written forever. So it is not a big problem in Linux. :) (But I don't know other OS how to deal it.:-/ ) 4c8c2000-4c8e9000 r-xp 00000000 08:08 1518987 /usr/lib/libfontconfig.so.1.2.0 Size: 156 kB Rss: 124 kB Shared_Clean: 124 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 124 kB 4c8e9000-4c8f1000 rwxp 00027000 08:08 1518987 /usr/lib/libfontconfig.so.1.2.0 Size: 32 kB Rss: 12 kB Shared_Clean: 8 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 12 kB
Thanks; I've pushed all of these changes.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.