СообЧа > База Знаний > Программирование > Visual Basic

Вопрос

Объясните мне, пожалуйста, про компиляцию. Там какой-то P-Code и еще Native Code, а с ним много всяких опций — Advanced Optimizations и т.д.

Ответ

Итак, про компиляцию:
р-код — Это не машинный язык, но близок к нему. Т.е. код не может быть выполнен непосредственно процессором, необходимо этот код преобразовать в команды для процессора, независимо от того, Pentium это или AMD. Поэтому для выполнения он преобразуется в команды того или иного процессора. Текст, который мы видим в окне программного кода, автоматически преобразуется в р-код. Для выполнения программы, написанной в р-коде, предусмотрен механизм организации вычислений — исполнительный процессор р-код всегда медленнее исполняемого кода (см.ниже), т.к. он генерирует последовательность машинных команд, без дополнительных преобразований. Но вы можете этого и не заметить из-за сегодняшних скоростей компьютеров. Сейчас р-код практически не используют.

Native code — исполняемый код, фактически последовательность процессорных команд, готовых к исполнению.

Теперь поговорим об оптимизации исполняемого кода.
for fast code — макс. быстродействие. Увеличение скорости работы за счет увеличения размера файла. На примере покажем это так(абстрактный пример, возможно не схожий с реальностью, но ярко показывает ситуацию). Исходный код:
for i=1 to 10
msgbox i
next i

Компилятор это запишет в исполняемом файле(на языке для процессора)
msgbox 1
msgbox 2
msgbox 3

msgbox 10

for small code — делает минимальный размер за счет уменьшения скорости. Тот же пример, но наоборот.
no optimization — без оптимизации — достигается компромисс между скоростью и размером файла. Как есть, так и оставляет.
favor Pentium Pro — оптимизация для процессоров Pentium Pro. Код будет работать и на любом другом процессоре.
Create Symbolic Debug Info — исполняемый файл можно отладить и с помощью других систем, поддерживающих функцию CodeView. Создается также дополнительный файл.
Advanced Optimization — расширенная оптимизация (надо использовать,т.к. может привести к неправильной работе программы).
Asume No Aliasing — эта опция запрещает передачу параметров по ссылкам. Ставить необязательно.
Remove Array… -проверка границ массива. При каждом обращении проверяется, выходит ли значение за границу массива, если да, то выдается ошибка.
Remove Integer… — не проверять переполнение переменных. Ускоряет операции с целыми числами. При включении опции при ошибке переполнения не генерируется сообщение об этом.
Remove Floating point… — не проверять результаты выполнения операции с плавающей точкой. Позволяет ускорить операции с плавающей точкой. Проверяет переменные типа Single, Double
Allow Unrounded… — не округлять результаты операции с плавающей запятой. Позволяет ускорить операции сравнения чисел с плавающей запятой (см. выше)
Remove Safe Pentium — отменяет проверку результатов деления чисел с плавающей запятой, ускоряя тем самым вычисления.

Илья



Copyright © 2000-2004 Сообщество Чайников
Контактная информация