Оптимизация компилятора в VB6 (26.06.2013). Печать
2013 - Июнь
26.06.2013 19:06
Save & Share

Сейчас 2013 год. Считается, что Visual Basic v.6.0 уже практически изжил себя, но это не так.

К примеру, есть были исследования о распространенности языков Basic в мире. Пока держится... А также в 2004 году появился бесплатный язык FreeBASIC, о нем читайте в Википедии.

Да, я защищаю VB6. И не смотрите на меня так. Он у меня был первым в жизни; и с самым удобным синтаксисом, на мой взгляд (который перенял LotusScript, например).

Но я отвлекся. Компилятор в VB6 имеет уже все правильно выставленные параметры, направленные на скорость. Почти. На вкладке "Advanced Options" стоит отметить несколько пунктов. Все они ориентированы на быстродействие, и выигрыш ощутим; однако, есть тонкости. Расположил в сторону уменьшения безопасности их использования:
- Remove Safe Pentium FDIV Checks: выключает генерацию кода, избавляющего от ошибок деления с плавающей запятой на старых процессорах Pentium (они остались разве что в музеях);
- Remove Array Bounds Checks: отключает проверку выхода за пределы индексов массивов. Если программа работает без ошибок "subscript out of range" - проблем не возникнет; иначе - возьмутся данные из ячейки памяти, не имеющей к массиву никакого отношения (без каких-либо уведомлений);
- Remove Integer-Overvlow Checks: отключает ошибку переполнения типов Byte, Integer, Long и Currency. Если программа работает без ошибок "overflow" - проблем не возникнет; иначе - возьмутся неверные данные (без каких-либо уведомлений);
- Assume No Aliasing: компилятор считает, что в программе не используются псевдонимы. Если все параметры в функциях программы передаются ByVal, а не ByRef - можно смело включать. Иначе - с осторожностью. У меня к этому параметру нареканий не было, даже при использовании ByRef к массивам с 200-тысячными индексами;
- Remove Floating-Point Error Checks: отключить проверку вычислений данных с типами Single и Double (переполнение, деление на ноль и прочие недопустимые операции);
- Allow Unrounded Floating-point Operations: включение сравнения результата вычислений с плавающей запятой без предварительного округления этих результатов к правильной точности (Single и Double). Повышается скорость вычислений, но при этом может оказаться так, что 2 значения с плавающей точкой будут не равны между собой из-за повышения точности вычисления.

Первый пункт можно включать всегда. Второй и третий - если хорошо написан код, и программа отлажена до включения этих опций. Четвертый - по желанию, но с тщательным тестированием после включения. Последние 2 пункта я бы не рекомендовал вообще никогда не включать: больно непредсказуемы.

Обновлено ( 30.12.2018 15:18 )