[an error occurred while processing this directive]
|
почти никогда не было на моем опыте, чтобы хоть какой компилер обошел меня самого в оптимизации (то есть когда я сам пишу на ассемблере и то-же, но на С). Исключение тут пока только тот самый 62-67-64 компилер, умеющий конвейеризировать циклы так, как самому и в голову не придет. Последний опыт был с x86 при решении задач с сильно-многоразрядной арифметикой. Ни один из компилеров не сделал так, как получилось вручную.
Ну а про распределение переменных - откуда например компилеру знать, что вот этот массив будет использован с DMA, и его выгодно тут положить, а этот - редко нужен и можно запихать его в некешируемую область, чтоб не разваливать кеш при доступе к нему. Откуда вообще знать компилеру о конфигурации кеша, а в примери 5500 серии, о том, какие переменные нужны в двухпортовом ОЗУ, а какие мижно и в однопортовке держать? Ведь это все вроде мелочи, а вот когда 1% ресурса осталось, тогда уже начинаешь изголяться и так и эдак. И не важно на каком процессоре.
E-mail: info@telesys.ru