Как ускорить set_tls и mprotect при запуске приложения ARM?

Я использую ARM (TI814x) на NAND (UbiFS). При запуске приложения QtGui требуется около 1 секунды, пока set_tls (локальное хранилище потока?) И mprotect не будут выполнены (в то время как загрузка всех общих библиотек занимает 1,3 секунды).

Почему это занимает так много времени и есть ли способ (например, конфигурация), чтобы ускорить это?

Например, при компиляции приложения без модуля QtGui это намного быстрее... но это не вариант.

[   1.375] mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40052000
[   1.391] set_tls(0x400524c0, 0x40052ba8, 0x400ad058, 0x400524c0, 0x400ad058) = 0
[   1.860] mprotect(0x4105b000, 8192, PROT_READ)   = 0
[   1.875] mprotect(0x400cb000, 4096, PROT_READ)   = 0
[   1.875] mprotect(0x4006d000, 4096, PROT_READ)   = 0
[   1.875] mprotect(0x4018c000, 4096, PROT_READ)   = 0
[   1.922] mprotect(0x40f26000, 4096, PROT_READ)   = 0
[   1.954] mprotect(0x40e7a000, 16384, PROT_READ)  = 0
[   2.204] mprotect(0x400ac000, 4096, PROT_READ)   = 0
[   2.219] munmap(0x400e4000, 4969)                = 0
[   2.219] set_tid_address(0x40052068)             = 212
[   2.219] set_robust_list(0x40052070, 12)         = 0
[   2.235] futex(0xbebc1cc8, FUTEX_WAKE_PRIVATE, 1) = 0

0 ответов

Другие вопросы по тегам