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

SELECT のパフォーマンスチューニング(メモ)

SELECT のパフォーマンスチューニング(メモ) ちょっと、メモ的に書き下しておきます。 1. 10 個のテーブルに 20000 件ずつデータを入れておきます。 2. 10 個のテーブルに対して、2000 回ずつ検索します。 というパターンがあったとき、どうやると早いでしょうか?という問題。 ■1回ずつ SqlDataAdapter を呼び出す だいたい 200 秒ぐらいかかります。 ■10回の呼び出しをひとつにまとめる SQL Server の場合、複数の検索結果を取れるので DataSet を使って 1 回にまとめます。 SQL Server 2008 だと 10 倍ぐらい早くなって 15 秒程度なんですが、 SQL Server 2000 だと、最初のパターンよりも遅くなってしまうんですよね…何故だろう? ■あらかじめ SqlCommand を作成する prepared … 続きを読む

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

時には機動警察パトレーバーのように、あるいは、600 万件のデータ加工を

たまぁーに、1巻だけ取り出して読み進めて、最後の熊耳巡査が出てくるところ(手元にあるのは文庫本)で、毎度思うところがある。 泉巡査がイングラムの能力を十分引き出せないのは何故か?格闘技術に疎いから、という結論になるのだけれど、イングラムというハードウェアに、イングラムを動かすソフトウェア(学習機能付き)が乗り、更に人の動かし方が最終的にイングラムの能力を決定づける(「個性」ともいうし、「個体差」ともいう)、という流れになる。 ハードウェアというのは、パソコンだったり、CPU だったり、メモリだったりするわけで、OS というのは、Windows だったり、Mac だったりする。いや、OSの取り方をもうちょっと広げれば、SQL Server だったり、Oracle だったり、.NET Framework だたり、するわけです。で、これを使うのが人なわけで、この場合はプログラマなのですね。 最近 … 続きを読む

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

上海で実演したテストケースの方針(メモ)その2

上海で実演したテストケースの方針(メモ) | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2217 の第2弾…のメモです。 先の例では、DAO(Data Access Object)なのでテスト対象は主に SQL になる訳ですが、今度は業務ロジック(business logic)を中心に解説します。 業務ロジックの場合は、基本は以下の 4 箇所がテストの対象になります。 メソッドのパラメータ if 文による分岐 for 文による繰り返し 内部メソッドの呼び出し ここで、内部メソッドの呼び出しは既にテスト済みであることが前提です。 サンプル的には次のコードを頭に入れます。 ■テストコードを書く順番 前回の DAO と同じように、簡単なものから複雑なものへと進めていきます。前のテストコードがコピー&ペー … 続きを読む

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

上海で実演したテストケースの方針(メモ)

上海出張して、NUnit の作り方を教え/実演してきました。 日本だと google で調べればそれなりに出てくるし「テスト技法」の本を読めば、それなりに分かるんですが、上海チームではそのあたりの資料が不足しております…という訳で、テストを作るときのメモを残しておきます。 ■テストコードを書く手順 TDD(テスト駆動)を正確にやるためには、テストコード作成後、実コード(=テスト対象のコード)を書く、という手順になるのですが、時間的な制約やテストコードの記述の慣れ、テストケースの作り方の慣れ≒理解度、もあるので、まぁ、「実コードを書いてからテストコードを書いても構いません」という方針で説明しました。 その中で、ひとつルールとして守ってほしいのは、以下のひとつだけ。 「コードを書いたら、その日のうちにテストコードを書いて確認することッ!!!」 テストコード初心者がやりがちなのは、大 … 続きを読む

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

string へのキャストと ToString の動作は異なる

いつまでも危ない(?)PDFを晒しておくわけには行かないのでw、小ネタでブログを進めます。 時々(特にVBプログラマの方?)では、文字列へのキャストを ToString で行っている箇所を見掛けるのですが、これは危ういです、という話ですね。 例えば、データベースから読み込みをした時に VB だと、こういう風に書いているのです。 こんな風に、ToString メソッドを使って object 型を文字列に変換しています。 ただし、本来はここはキャストを使うべきです。後述しますが、キャストと ToString メソッドの【意味】が異なるので、必ずしも同じ動作をするとは限らないのためです。 C# の場合は、 # 詳細に言えば、dynamic cast を使うんでしょうが、ここでは普通のキャストで。 さて、ToString でも用途は足りるので、これでも良いような気がしますが、何故キャストを使わない … 続きを読む

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

デスマーチを脱するための5つの方法(プレゼン)

デスマーチを脱するための5つの方法(メモ) | Moonmile Solutions Blog http://www.moonmile.net/blog/archives/2184 国家的なデスマーチの問題と、ITプロジェクトのデスマーチの問題をいっしょに論じることはできない…とは思っていませんがw、まぁ、貼り付けてある画像は特に悪意がある訳でもなく、特別な意味がある訳でもありません。 PDF 版は、こちらからダウンロードしてください。 な感じで、頭の隅に入れておくとよいです。

カテゴリー: プロジェクト管理, 雑談 | 1件のコメント