Sulphide
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Про вкручивание мозгов компилятору Delphi ничего не слышно было в новых версиях? Меня очень угнетают вот такие его "изыски"... Очень бы хотелось, чтобы это был уже нормальный компилятор, а не что бы "абы как работало"... Все-таки иногда (читай "всегда") нужна и скорость работы приложения. Понятно что вручную будет максимально быстро (именно в случае с Delphi), но используя FPC ты хотя бы уверен, что он старался... Оригинальный код: Код: RGBColor = record case DWORD of 0: (U: UInt32); 1: (b, g, r, a: Byte); end; mem: PByte; c: RGBColor; (mem + 0)^ := c.b; (mem + 1)^ := c.g; (mem + 2)^ := c.r; (mem + 3)^ := c.a; inc(mem, 4); | Delphi (Release, Optimizations): Код: movzx rax, byte ptr [rbp+var_s64] mov rcx, [rbp+var_s40] mov [rcx], al movzx rax, byte ptr [rbp+var_s64+1] mov rcx, [rbp+var_s40] mov [rcx+1], al movzx rax, byte ptr [rbp+var_s64+2] mov rcx, [rbp+var_s40] mov [rcx+2], al movzx rax, byte ptr [rbp+var_s64+3] mov rcx, [rbp+var_s40] mov [rcx+3], al add rcx, 4 | К слову... FPC (O3+): Код: mov dl, byte ptr [rbp+var_10] mov [rax], dl mov dl, byte ptr [rbp+var_10+1] mov [rax+1], dl mov dl, byte ptr [rbp+var_10+2] mov [rax+2], dl mov dl, byte ptr [rbp+var_10+3] mov [rax+3], dl add rax, 4 |
| Всего записей: 277 | Зарегистр. 20-03-2008 | Отправлено: 18:12 10-11-2018 | Исправлено: Sulphide, 18:58 10-11-2018 |
|