От этого страдают и лязг (10), и г cc (9,3). У меня есть несколько глобальных переменных. Я перебираю data_in и пишу в data_out и misc_data (но этот намного меньше). Мое время выполнения увеличивается с 70 мс до 300 +
Выполняя diff на асме, я вижу %fs:
и data@TPOFF
везде. Что это такое, как работает TLS и почему это так медленно? Я предположил, что TLS была сопоставлена виртуальная память для каждого потока по-разному, поэтому я предположил, что неправильно, и есть еще что-то?
thread_local u8 data_in[1024*1024*100] __attribute__ ((aligned(16)));
thread_local u16 data_out[sizeof(data_in)] __attribute__ ((aligned(16)));
thread_local u8 misc_data[sizeof(data_in)] __attribute__ ((aligned(16)));