XIBファイル読み込みとコードでView構築,どっちが速い?

== 2009/11/25 追記 ==
MonoTouchのメーリングリストhttp://lists.ximian.com/pipermail/monotouch/2009-November/001589.htmlで,これを詳細に調べたRory Blythさんのまとめを引用します:

  • Keep the MainWindow.xib file
  • Keep it simple
  • Limit it to your app's initial screen
  • Code everything else by hand

MainWindow.xib だけは置いておくのですが,それもViewを置く程度のシンプルなものにしておいて,それ以外はコードで書くのがよいみたいです.これにより得られるロード時間のメリットは10msecの桁程度ですから,実体験で分かるものではないでしょう.

== はじめに ==
Viewのロード方法は,XIBファイルの読み込みとコードで書くのと2通りの方法があります.どちらでも問題なく使えているのですが,ふと,どっちが速いのかと思いシミュレータと実機で速度比較をしてみました.
== テストコード ==
作成したコードはラベルとボタンがあるだけのシンプルなもので,XIBを読み込むものとコードで書いたものそれぞれのControllerについてインスタンスしてからViewDidLoad()が呼び出されるまでの時間を表示します.ボタンを押すたびに,XIBとコードそれぞれのControllerは互いにControllerをインスタンスしてViewに追加していきます.
サンプルコードはこちらです: OneDrive

実機とシミュレータいずれもReleaseでビルドしています.結果は:

iPhoneシミュレータ (Mac mini intel core2duo 2.0GHz)

  • 1回目
    • XIB 16msec
    • CODE 3 msec
  • 2回目
    • XIB 1msec
    • CODE 0.4msec
  • 3回目
    • XIB 1msec
    • CODE 2msec

iPod Touch (1G)

  • 1回目
    • XIB 147 msec
    • CODE 227 msec
  • 2回目
    • XIB 31 msec
    • CODE 15 msec
  • 3回目
    • XIB 26 msec
    • CODE 14 msec
  • 4回目
    • XIB 25 msec
    • CODE 13 msec

となりました.初回と2回目以降でロード時間に違いがありすぎる理由が分かりません.初回はライブラリなどが初期化かなにかをしているのだとして,2回目以降の値が実力値だとすればコードで書いたほうがXIB読み込みより2倍速いです.またシミュレータは実機よりかなり速いです.