Re[11]: Где Борланд свернул не туда?
От: rudzuk  
Дата: 03.06.25 13:56
Оценка:
Здравствуйте, Sinclair, Вы писали:

S> Ну, то есть может быть переход на SSE2 у них совпал с более вменяемым распределением локалов по регистрам — тогда, возможно, результат был чуть менее плачевным. А если нет — то увы, вот это вот тасование значений туда-сюда убивает всю производительность.


Вот так это выглядит на XE2:
procedure test;
var
  S, a,b,c : Double;
begin
  S := Sqrt(a*a+b*b+c*c);
end;

Project1.dpr.14: S := Sqrt(a*a+b*b+c*c);
0000000000425968 660F28D8         movapd xmm3,xmm0
000000000042596C F20F59D8         mulsd xmm3,xmm0
0000000000425970 660F28C1         movapd xmm0,xmm1
0000000000425974 F20F59C1         mulsd xmm0,xmm1
0000000000425978 F20F58D8         addsd xmm3,xmm0
000000000042597C 660F28C2         movapd xmm0,xmm2
0000000000425980 F20F59C2         mulsd xmm0,xmm2
0000000000425984 F20F58D8         addsd xmm3,xmm0
0000000000425988 660F29D8         movapd xmm0,xmm3
000000000042598C E88FFBFDFF       call Sqrt
avalon/3.0.2
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.