2008年4月25日金曜日

フラグメントと効率

パケットを送信する際、パケット長が長ければ長いほど送信に失敗する確立が高くなる。そのため、ビットエラーの発生率が高い無線リンクなどでは、短いパケットなら届くのに、長いパケットだと届かないという状況に出合うことがある。

パケットを短くすれば良いのは明らかだけれども、アプリケーションレベルでは(なるべく)パケットサイズを気にしたりしたくないし、TCPのように、そもそもアプリケーションレベルでパケットサイズの調整が困難な場合もある。

そこで、単純に大きなパケットを送信する際にリンク層で分割するだけで、多少なりとも効率があがったりはしないのか、と考えたくなる。

エラー発生時の再送などを考慮しつつ、思い切り通信モデルを単純化して、1500バイトのパケットを送信する際のフラグメントサイズと、通信効率の関係をプロットしてみたところ、上のようなグラフになった。通信路のビットエラー率は10-4を仮定している。

フラグメントサイズが40のときが最も効率が良いらしい。うーん。本当だろうか。

2008年4月6日日曜日

iPhone SDKとInterface Builder

iPhone SDKが更新されて、Interface Builderが付属するようになった。早速試してみようと思ったところ、どうやらまだXcodeとの統合が完全ではなく、新規プロジェクトを作成するときに自動的に適切なixbファイルを作ったりはしてくれないようだ。

ウェブで先達の知恵を漁って、なんとなくInterface Builderを使う方法がわかったけれど、一点すごくはまったところがあるので、ここに書いておこう。

Interface Builderで新規のCocoa touch用ixbファイルを作成し、WindowとViewを作成するのだけど、Viewの初期値でUser Interactionがオフに設定されている。このせいで、View内に配置したボタンからのアクションが実行されずに、かなり悩んだ。

次のベータでは、きっとXcodeとの統合も完了し、Interface Builderでほいほい画面が作れるようになるだろうから、その時を気長にまとう。その前に日本でiPhone発売されないと、あんまり意味ないけど。