機能 >

ToStringBuilder

  • ToStringBuilder は、array のみをコンテナとして認識し、その要素を展開して文字列化します*1。それ以外のタイプの文字列化には、stringのキャスト(実装があれば、__toStringメソッド)が使用されます。
    ※Ver. 1.0.2以前では、ToStringBuilder は、array の内容を展開し文字列化しますが、array の要素に自己参照参照ループがある場合、無限ループを回避することができません(そもそも自己参照を持つ array の === による同一性比較自体が要素比較の走査によりエラーになるためです)。利用の際にはご注意ください。Ver. 1.0.3以降では、デフォルトでネストレベル10で強制的に文字列化を中止するように変更されており、問題とはなりません。

パフォーマンステスト

テスト内容

  • 1000回 ToStringBuilder を構築し、その都度 log4php の debug メソッドでファイルにログ出力します。
  • ToStringBuilder に append するフィールド数は、15。
  • 比較のため、全くログ出力しない場合も計測します。

結果

  • ロギングしない場合で、3.5秒程度なので、1回のビルダ構築は3ミリ秒程度になります。
  • ロガーの初期化などは計測対象ではないので、実質的にログ出力しない INFO レベルでは、ロギングしない場合とほとんど差がありません。
    1. Log Level: DEBUG
     LOGGING_ON:  0:00:04.481
     LOGGING_OFF: 0:00:03.448
    
    2. Log Level: INFO
     LOGGING_ON:  0:00:03.602
     LOGGING_OFF: 0:00:03.522
  • 別のマシン環境では以下のようになりました。傾向は同じようです。
    1. Log Level: DEBUG
     LOGGING_ON:  0:00:03.571
     LOGGING_OFF: 0:00:02.693
    
    2. Log Level: INFO
     LOGGING_ON:  0:00:02.846
     LOGGING_OFF: 0:00:02.732

*1 PHPには他に適当なコンテナ型がありませんし、array を string でキャストした場合には、"Array" とのみ出力されるからです。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-05-31 (日) 21:31:21 (3850d)