HELP
- From
- Ianos Gnatiuc (2:469/303.55)
- To
- Viktor Karev
- Date
- 2002-10-04T22:09:23Z
- Area
- RU.ALGORITHMS
Hello Viktor!
03 Oct 02 12:10, you wrote to me:
>> тем не менее, компилятор никогда не сможет сделать критическую зону
>> лучше чем человек. как правило, там где скорость криточно, пишут на
>> асме, а не всю програму.
VK> Насчет "никогда" у меня есть сомнения.
компиляторы, как правило, отстают от новых процессоров.
VK> Посмотри, как оптимизирующий транслятор преобразует сложные
VK> арифметические выражения.
VK> Он учитывает такие тонкости, что некоторые операции можно
VK> переставить без ущерба для результата, а такая перестановка даст
VK> выигрыш либо по скорости выполнения, либо по размеру кода. Причем
VK> такая перестановка может быть разной на разных процессорах.
VK> И оптимизация в трансляторах строится именно в расчете на
VK> преобразование таких выражений.
а вот и пример токова:
inline DWORD irand()
{
iholdrand *= 214013;
iholdrand += 2531011;
return iholdrand;
}
...
DWORD w = irand();
...
...
mov eax, iholdrand
lea ecx, [eax+eax*2]
lea edx, [eax+ecx*4]
shl edx, 4
add edx, eax
shl edx, 8
sub edx, eax
lea eax, [eax+edx*4+2531011]
mov iholdrand, eax
mov w, eax
...
красота :)
кстати, кто может объяснить, почему rand не повторяется пока не пройдет через все возможные 32 битные значения?
VK> Сомневаюсь, что человеку удастся за приемлимое время написать на
VK> asm функцию дифференцирования символьного выражения, причем в
VK> нескольких вариантах: для 486, для пентиума, с оптимизацией по
VK> памяти и с оптимизацией по времени.
в этом я частично согласен.
>> для примера, посмотри как деляется простая функция как memmove(...)
VK> А что memmove? Конечно, логичнее написать библиотечную функцию на
VK> asm, чем писать оптимизатор, который будет делать такой же код.
VK> Это забота авторов транслятора, что вставить в оптимизатор, а что
VK> - в библиотечную функцию.
эту функцию никакой компилятор и не сможет оптимизировать для скорости, так как оптимальный по скорости код зависит от очень многих факторов, которых даже программисты не могут всегда предсказать.
VK> А я уже работаю с результатом. В частности, использую тот же
VK> memmove, но на ЯВУ.
на javа не пишут быстрых програм.
Ianos
... [WinAmp is not installed] EMAIL: ssianky[at][hotmail | yahoo].com
--- GoldED+/W32 1.1.4.7
* Origin: SS Ianky - (373-2) 534966 (2:469/303.55)