月別アーカイブ: 2011年6月

UIScrollView 上では UIViewController 上のボタンイベントを拾えない

電子書籍のおおまかな構造設計をしている途中なのですが、どうも腑に落ちない現象に出会ったのでメモ的に。 結論から言うと、タイトル通り、UIScrollView 上にある UIViewController のイベントは、手軽には拾えません…という話です。 ■設計要件 まずは、次のように設計を考えました。 ・ページ捲りの部分は、UIScrollView を使う。  → スライドさせたいので、ページを横に並べてスクロールさせるとよい。  → ページ捲りのアニメーションよりも、手軽に作れる、と思う。   ・ページ単位は、View で作りたい。  → 手軽にページを構成したいので、ページ単位で作りたい。  → これは UIViewController にボタンなどを乗せるのがよいかなと。   ・ページ間で共通のボタンがある。  → ナビゲートボタンのように、ページ間で共通の場所にボタンがあ … 続きを読む

カテゴリー: 開発, iPad | 6件のコメント

iPad の電子書籍アプリを作るよ(1)

とある六本木でとある電子書籍アプリを作っている途中でして…全くの iPad/iPhone の素人プログラマ(.NET プログラミングに関してはプロねッ!!!プロッ!!!) が、玄人になるまでの航跡だったらいいなぁと。 iPad電子書籍アプリ開発ガイドブック http://www.amazon.co.jp/dp/4844329065 賛否両論ありましょうが、最初の一冊が↑です。 電子書籍アプリに特化しているので、その他のアプリ(ゲームアプリとかネットにアクセスするアプリとか)には全く役に立ちませんが、逆に言えば、取っ掛かりとしては十分です。 これを読んで、電子書籍アプリの作成をする際に、 ・文章も含めて背景を貼り付ける。 ・動画やアニメーションを重ね合わせる。 ・透明ボタンを重ね合わせて、ボタン機能を作る。 という方針を決めました。まぁ、お手軽に作るのと、電子書籍自体のページ数が … 続きを読む

カテゴリー: 開発, iPad | コメントする

SqlBulkCopy のスピードは 20 倍ぐらい早い

SQL Server に insert を繰り返してデータを入れる場合は、 ・bcp を使う。 ・bulk insert を使う。 ・SqlBulkCopy を使う。 を使います。bcp や bulk insert の場合は、ファイルからインポートするのでちょっと扱いづらい。SQL Server が別のマシン(サーバー機)にある場合は、一度ファイル転送をするか、ファイル共有をしないといけないので、ちょっと面倒です。 なので、SqlBulkCopy を使う…ってところまでは知っていたのですが、果たしてどのぐらいのスピードかどうかは定かだではないので、測定してみました。 結論から言えば、20 倍ほど早くなります。SQL Server 2008 の場合は 30 倍ほど、SQL Server 2000 の場合は 10-20 倍ほどなので業務コードに入れる場合は実測が必須ですね。 以下は … 続きを読む

カテゴリー: 開発, C# | コメントする

StringBuilder はどれだけ早いのだろうか?、実は大してかわりません

SqlCommand や DataTable を使うときに文字列をたくさん使うのですが、果たして世間一般(?)で言われているほど、String は遅く、StringBuilder は早いのでしょうか?というベンチマークです。 非常に長い場合は StringBuilder を使うほうが良いのですが、SqlCommand などに渡す SQL 文程度(長くても 5000 文字ぐらい)は、どうなのでしょうか?ということです。 ■結論 結論から言えば、大して変わりません。以下は 20,000 件のデータを廻したときの結果です。 avg. Normal 7.54 sec avg. StirngBuilder 7.22 sec avg. SqlCommand 7.28 sec 違いは 2,3 % ぐらいしかないので誤差の範囲ですね。 以下は、ベンチマーク用の実験コード ■通常の String パターン … 続きを読む

カテゴリー: 開発, C# | 5件のコメント

意外と遅い DataTable 、なので List を使うと 5 倍早くなる

以前から気になっていたのですが、DataTable/DataSet を使うと遅いのでは?と思っていました。 実際、Visual Studio で自動生成する型付の DataTable を使うと思ったように性能がでないことが多く、結局 SQL でチューニング、ってことになります。 で、具体的に遅そうなところを実験してみました。 単純に DataTable の性能を比較したいので、データベースには使わず値の代入だけ実験します。 列が 100 のテーブルを想定する。 行数を 10000 件挿入する。 これを次のパターンで比較します。 普通に DataTable を使う With 構文を使って、高速化する? for earc を使ってカウンタを使わない方法 名前を使わずに index を使う generic list を使う generic list で構造体/クラスを使う 先に結論から書くと、1 … 続きを読む

カテゴリー: 開発, C# | 6件のコメント

SELECT のパフォーマンスチェック(続き)

.NET を使って SQL Server に対して SELECT するには、ってことでパフォーマンスのチェックをしました。 10 個のテーブルに 20000 件ずつデータを入れておきます。 10 個のテーブルに対して、2000 回ずつ検索します。 テーブルには主キーを付けておきます。 という形でデータを作っておいて、以下のパターンで検索をします。 個別に SqlDataAdapter を使って呼び出し 10 個のテーブルの検索をひとつにまとめて、SqlDataAdapter で呼び出し 10 個のテーブルの検索をひとつにまとめて、SqlCommand で呼び出し LINQ to Entities を使って呼び出し LINQ to SQL を使って呼び出し 結論から言えば、 個別SELECTよりも、LINQ を使うと 2 倍ぐらい遅くなる。 LINQ to Entities と LINQ t … 続きを読む

カテゴリー: 開発, C# | コメントする