ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
46053 Топик полностью
yuri_t (09.12.2005 16:01, просмотров: 1) ответил yuri_t на О коде, генерируемом различными компиляторами
О скорости и размерах кода 

Выводы которые я сделал для себя:

 - для кода,где преобладают конструкции типа if-else и
   присваивания,ВСЕ проверяемые компиляторы генерят
   практически одинаковый код(ARM RVDT чуть лучше,
   GCC-чуть хуже) и скорость исполнения практически
   таже самая

 - на повышенных уровнях оптимизации для всех 
   компиляторов поведение различно.Опуская причины,
   я думаю,что для всего проекта применение
   повышенных уровней оптимизации нецелесообразно -
   (все компиляторы на высоких уровнях оптимизации
    ведут себя непредсказуемо -> после каждого даже 
    небольшого изменения проекта нужно проводить 
    заново ПОЛНОЕ тестирование,a это не всегда возможно)

  - качество кода,генерируемого современными ARM
    компиляторами даже c уровнем оптимизации O1 
    очень высокое.

    Пример: нужно загрузить 2 константы по двум разным
    адресам памяти
    
    Человек напишет код:
       ldr r0, r3  ;-- 1я константа  в r3
       str r0,[r1] 
       ldr r0, r4  ;-- 2я константа в r4
       str r0,[r2] 
   Компилятор создаст такой же код.
    
   Но вот если константы одинаковые,то компилятор
   знает это и создаст код на команду меньше:
       ldr r0, r3  ;-- 1я константа(и 2я константа такая же)
       str r0,[r1] 
       str r0,[r2] 
  Человек же в 99% случаев никогда не будет "закладываться"
  на то,что константы окажутся одинаковые   

  - стандартные библиотеки GNU значительно уступают
    стандартным библиотекам коммерческих компиляторов