Интуитивно, я бы ожидал, что они скомпилируются в один и тот же код. Но давайте посмотрим, что на самом деле происходит! Используя godbolt с вашей первой версией (однострочник), мы получаем этот код:
mov eax, DWORD PTR [rsp+20]
mov esi, DWORD PTR [rsp+28]
imul esi, DWORD PTR [rsp+32]
imul eax, DWORD PTR [rsp+24]
lea eax, [rax+rsi]
mov esi, DWORD PTR [rsp+36]
imul esi, DWORD PTR [rsp+40]
add esi, eax
add esi, DWORD PTR [rsp+44]
mov DWORD PTR [rsp+44], esi
С второй версией мы получаем это:
mov esi, DWORD PTR [rsp+28]
imul esi, DWORD PTR [rsp+32]
mov eax, DWORD PTR [rsp+20]
imul eax, DWORD PTR [rsp+24]
add eax, DWORD PTR [rsp+44]
lea eax, [rax+rsi]
mov esi, DWORD PTR [rsp+36]
imul esi, DWORD PTR [rsp+40]
add esi, eax
mov DWORD PTR [rsp+44], esi]
Это, я полагаю, одни и те же инструкции в несколько ином порядке. Я подозреваю, что производительность в этих двух случаях будет почти одинаковой, хотя, возможно, (?) Будет небольшая разница в производительности конвейера с одним по сравнению с другим.
Я подозреваю, что ваша первая версия здесь вполне подходит.