2007/1/28 日曜日

パフォーマンス

Posted in プログラミング by 管理人 @ 1 月 28, 2007

パフォーマンスを考えているコーディングしているだろうか?
私もできれば速く効率のよいコードが良いと
考えていたのだが、必ずしもそれが良いコードではないということを知った。

Donald Knutは「An Empirical Study of Fortan Programs」という論文の中
で、プログラムの4%未満が実行時間の50%以上を占めているとしている。
つまりプログラムのほんの4%が実行時間の大半を占めているので、プログラムを
コーディングする際にパフォーマンスを考慮してコーディングするのではなく
読みやすさメンテナンスを最優先コーディングすべきだと思う。

実際にプログラムが完成したところで実行して遅いと感じたらパフォーマンスの
ことを考えても遅くないと思う。実際にプロファイラなどを使ってどこの
箇所が実行を遅くしているのかを調べる必要がある。まあその箇所も全体の4%
を探しあててそこ改善すればだいたいOKになるはずだ。

なので最初からコーディングする際にパフォーマンスを意識して
全体を速くしても意味がないし効率が悪いし、パフォーマンスを意識して
読みやすさメンテナスが悪くなっては元も子ないのである。

コードチューニングのテクニックで「行数が少ない方が速い」という定説があるがこれは嘘である。
下の例


rei1:
for i =1 to 10
  a[i] = i
end for

rei2:
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a{5]=5
a[6]=6
a[7]=7
a{8]=8
a[9]=9
a[10]=10

行数が少ない方が速いのというならrei1のほうが速いと考えるだろうが
実際には

言語 rei1の所要時間 rei2の所要時間
Visual Basic 8.47 3.16
Java 12.6 3.23

である。驚きだろうがコードの行数を減らしたからといって速度には関係ないのである。
またコンパイラにもよって速度というのは変わってくるので、以前この方法で速くなったという
経験則はまったく通じないのである。
またこの続きはいつか書きたいと思う。

Unixシステムパフォーマンスチューニング 第2版
ジャン‐パオロ・D. ムズメキ マイク ルキダス Gian‐Paolo D. Musumeci Mike Loukides 砂原 秀樹 高橋 敏明 岡島 順治郎
オライリージャパン
売り上げランキング: 190235
おすすめ度の平均: 4.0

3 チューニングの初歩
5 第2版はすごい SolarisとLinux対応

Javaパフォーマンスチューニング 第2版
ジャック シラジ Jack Shirazi 今野 睦 福与 直也 杉野 博史
オライリージャパン
売り上げランキング: 218786
おすすめ度の平均: 3.0

2 内容は良いんですが...
4 コードレベルのパフォーマンスチューニング

2007/1/22 月曜日

Accessにテーブルを作成する

Posted in c# by 管理人 @ 1 月 22, 2007

Accessにテーブル追加するサンプルです。

private void button1_Click(object sender, System.EventArgs e)
{  
    System.Data.OleDb.OleDbConnection cn =
    new System.Data.OleDb.OleDbConnection();
    System.Data.OleDb.OleDbCommand cmd;

   // 接続文字列を設定してデータベースに接続する
    cn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;”
    + “Data Source=C:¥tmp¥DBSample.mdb;”;
    cn.Open();

   // 追加するテーブルが存在していたら削除しておく
    try
    {
      cmd = new System.Data.OleDb.OleDbCommand(
      ”DROP TABLE 社員”, cn);
      cmd.ExecuteNonQuery();
    }
    catch{}

   try
    {
      // 社員 テーブルを追加する
      cmd = new System.Data.OleDb.OleDbCommand(
      ”CREATE TABLE 社員(社員番号 INT, 氏名 TEXT(30))”, cn);
      cmd.ExecuteNonQuery();
    }
    catch( Exception ex)
    {
      MessageBox.Show(ex.Message.ToString());
    } 

   // データベースへの接続を切断する
    cn.Close();

   MessageBox.Show(”[社員]テーブルを追加しました。”, “結果通知”);
}

速効解決!逆引きハンドブックVisual C#

速効解決!逆引きハンドブックVisual C#

posted with amazlet on 07.01.22

日向 俊二
ソシム
売り上げランキング: 9460

おすすめ度の平均: 5.0

5 手許においておくと便利

2007/1/17 水曜日

Accessのテーブル一覧取得

Posted in c# by 管理人 @ 1 月 17, 2007

たまにはプログラム的なことも書こうかなと思いまして
リファレンス的なものを作っていこうかなと。

なにかの役に立つかもしれなので(なんの役に立つかはわからないが・・)

環境はVisual C# 2005 Express Editionです。

ということで、Accessのファイルのテーブル一覧取得です。

private void button1_Click(object sender, System.EventArgs e){
    System.Data.OleDb.OleDbConnection cn =
        new System.Data.OleDb.OleDbConnection();
    DataTable dt;

    // 接続文字列を設定してデータベースに接続する
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"
        + "Data Source=C:¥tmp¥DBSample.mdb;";
    cn.Open();

    // テーブル一覧を取得する
    dt = cn.GetOleDbSchemaTable(
        System.Data.OleDb.OleDbSchemaGuid.Tables
        , new object[] {null, null, null, "TABLE"});

     // データベースへの接続を切断する
    cn.Close();

    // 結果を表示する
    foreach(DataRow dtRow in dt.Rows)
        System.Diagnostics.Debug.WriteLine(dtRow[2].ToString());
}

結果は出力ウィンドウに表示されます。

独習C#
独習C#

posted with amazlet on 07.01.17
ハーバート シルト Herbert Schildt スリーエーシステムズ 矢嶋 聡
翔泳社
売り上げランキング: 43705
おすすめ度の平均: 4.0

4 C#の文法を学ぶ本だというのは確かにそのとおり
4 .NET Frameworkの解説書ではありません、文法マニュアルです
4 この本はC#の文法の本です。

2007/1/7 日曜日

あけましておめでとうございます!

Posted in 日記 by 管理人 @ 1 月 7, 2007

すこし、遅いですが、あけましておめでとうございます。
今年もよろしくお願いします。

去年はなんとか資格も取得でき、少しはスキルも向上したのかなと思います。
今年はさらに上位資格を取得しようと考えてるとこです

今年はコードコンプリートを読破しようと思うのですが、

もし、おすすめ本とかプログラマなら読んでおいてほうがいいという本があれば
あと笑えるおもしろい本
コメントに書いてもらえると、ありがたいです。

でわでわ

自動売買ロボット作成マニュアル初級編 (現代の錬金術師シリーズ 45)
森田佳佑
パンローリング
売り上げランキング: 5832
おすすめ度の平均: 4.0

4 エクセルマクロとVBAの入門書
5 初心者向け自動売買登竜門

Excelを使ったシステムトレードで「勝ち組」投資家になる
井上 義教
同友館
売り上げランキング: 42369
おすすめ度の平均: 5.0

5 重要なエッセンスがコンパクトにまとめられています
5 勘ピュ-ター投資家

XHTML 1.0 CSS 2.0 RSS