おまえらちょっと聞いてください
関数内関数とクラスの動作速度を比較するために、
ほぼ同じ機能を持つクラスと関数を作ってみたんです。


type
 TClassA=class(TObject)
 private
   function Left(AStr:String):String;
   function Right(AStr:String):String;
 public
   function AMain(AStr:String):String;
 end;

{ TClassA }
function TClassA.AMain(AStr: String): String;
begin
  Result := Left(AStr) + Right(AStr);
end;
function TClassA.Left(AStr: String): String;
begin
  Result := Copy(AStr,1,3);
end;
function TClassA.Right(AStr: String): String;
begin
  Result := Copy(AStr, Length(AStr)-3, 3 );
end;


{ FunctionB }
function FunctionB(AStr:String): String;
  function _Left(AStr: String): String;
  begin
    Result := Copy(AStr,1,3);
  end;
  function _Right(AStr: String): String;
  begin
    Result := Copy(AStr, Length(AStr)-3, 3 );
  end;
begin
  Result := _Left(AStr) + _Right(AStr);
end;


そしてこれらを一秒間に何回実行できるか調べたところ、漏れのマシンでは

ClassA=540000
FunctionB=625000

でした。やっぱりクラスはリソースを浪費するので
何が何でもクラス、というは良くないと思われます