Попробуйте эти две вещи отдельно и вместе:
if($_POST['submit']){}
$from
(только моя кишка) предварительно загружать данные в кеш (не загружая его в регистр):
PREFETCHT0 [address]
PREFETCHT1 [address]
PREFETCHT2 [address]
intrinsic: void _mm_prefetch (char const* p, int hint)
См. insn ref manual и другие руководства, для которых означают разные подсказки близости. (Другие ссылки в теге x86 wiki).
Известная статья Что каждый программист должен знать о памяти , была написана, когда P4 был текущим. Текущие процессоры имеют более интеллектуальные аппаратные префетеры, а гиперпоточность полезна гораздо больше, чем просто выполнение потоков предварительной выборки. AFAIK, потоки предварительной выборки - в основном мертвая идея. Кроме этого, отличная статья о кешировании. Найдите другие сообщения SO и прочее, чтобы решить, когда на самом деле делать предварительную выборку.
Do not переусердствовать с предварительной выборкой программного обеспечения на Intel IvyBridge. Эта конкретная микроархитектура имеет ошибку производительности и может удалять только одну предварительную выборку на 43 такта .
Сбросить строку кэша, содержащую заданный адрес:
clflush [address]
clflushopt [address] ; Newer CPUs only. Weakly ordered, with higher throughput.
intrinsic: void _mm_clflushopt (void const * p)
Недавно появился вопрос о его производительности .
_mm_clflushopt()
, похоже, не поддерживается MSVC 2017 toolset v141. – Serge Rogatch 6 August 2017 в 09:37clflushopt
? Документы Intel только_mm_clflushopt
– Peter Cordes 6 August 2017 в 09:40