Архив за 16 апреля 2008

Apr16

Const в функциях

Если в функцию передаете строку и в самой функции эта строка не изменяется - объявляйте ее как const. В большинстве случаев это исключает скрытое добавление try..finally, а значит немного ускоряет работу функции.

 

Если не применять ключевое слово const, компилятор будет считать, что строка, возможно, будет меняться в функции, и добавляет скрытыю локальную переменную для хранения строки, т.е. получается примерно следующее:

function FuncName(AStr: string): Integer;

var

  lOldStr: string;

begin

  lOldStr := AStr;

  try

    // Тут код функции

  finally

    AStr := lOldStr;

  end;

end;

 

Я для себя провел небольшой тест и получилось, что при использовании const функция работает на 3-5% быстрее.