かなり嵌ったので備忘録。sennaをインストールする際、configureのオプションを指定しないと、デフォルトの文字コードはeuc-jpでconfigureをすることになる。mecabで文字コードをutf8に設定するならば、sennaもそれに合わせて文字コードをutf8に設定しなければならない。あとsennaのconfigure時に何箇所か問題が起こるところがある。
Month: 2008年12月
マシンスペックとデータベースのパフォーマンスの関係
マシンが高性能であればあるほど良いに越したことはないが、データベースソフトウェアのパフォーマンスにおいてはマシンの高性能化はあまり意味があるとはいえない。データベースのパフォーマンスを向上させるためには、データベースのテーブルの設計とそれに合わせたsql文のチューニング、そしてデータベースソフトウェア自体のチューニングがほとんどを占める。マシンスペックをあげても、たとえばcpuの処理の能力とメモリ容量を倍にしたとしても、パフォーマンス面ではその投資分の効果は得られない。 例えばメモリを増強すると同時接続やキャッシュなどのサイズを大きく取ることができる。cpuの処理速度はどうかというと、一回のsql文を実行した速度では、高スペックマシンと低スペックマシンではさほど差が表れなかった。試してみたところ、cpuがppc200Mhzでメモリ64MBの玄箱と、cpuがクアッドコア2.1Ghzでメモリ2GBのサーバーマシンでmysqlを使って速度比較をしたてみたら、sqlのselect文の実行にかかる時間は両者ほとんど変わらなかった。
SQL_CALC_FOUND_ROWSの効果
mysqlでは行数のカウントをするのにSQL_CALC_FOUND_ROWSというのを使うことができるようだが、where句に条件を指定した場合だとcount(*)でレコードをカウントする場合と大差ない結果となった。SQL_CALC_FOUND_ROWSを使うことで速度的には向上は見込めない。レコード数が100万件を超える場合にwhere句で条件を指定してそのレコード数をカウントするという場合には、一度グループ化で行数をカウントした後でその結果を合計したほうが若干速く処理することができる。
インデックス列には日本語よりも英数字を使うほうが良いのか悪いのか
テーブル内に存在するレコード数をカウントする時、where句にインデックス列を条件として指定して実行時間がどれほどかかるかテストをしてみた。テーブルの全レコード数は約1600万レコードで、カウントすべきレコード数はそのうちおよそ約70万レコードであるとする。サーバのスペックとしてはcpuがAMDのクアッドコア2.1GHzでメモリ2GB、DBソフトウェアはmysql5.0といったところ。
結果の行数をカウントする
mysqlで結果の行数をカウントするsql文は、
seletc count(*) from foo;
で取得するのが最も簡単ではあるけれど、レコード数が膨大な場合にはパフォーマンスの面で問題になる場合がある。パターンマッチングで検索する場合、Like演算子を使って
xbox360がまた壊れた
前回リングランプが3つ点灯して画面がフリーズするという故障で修理をして、マザーを交換して帰ってきた私のxbox360がまた故障した。故障は前回と同じくリングランプ3つ点灯してフリーズ、以降なにも入力操作を受け付けない状態となる。修理以来、ほとんど起動してなったのに、たまにゲームしようかと起動してみると同じ故障とは如何に。あと、故障とは関係ないことだけれど、修理から帰ってきたときの電源の差込み位置が微妙にずれていた。しかも電源を本体に差し込むのにかなり強引に差し込む必要になった。ぐだぐだな感じがいっぱいなxbox360だけれど、2回目の修理に出すことにした。リングランプ3つ点灯の故障は修理費用がいらないとのことなのでその点だけは救いがある。
vb2005のカスタムコントロールの初期表示イベント
UserControl イベント
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.usercontrol_events.aspx
一覧を見渡してみたが、shownイベントは存在しない模様。loadイベントはあるが、その次に起こるイベントのshownイベント、つまりコントロールの部品が描画されてから起こるイベントはないようだ。独自のカスタムコントロールを作って公開して配布をするというような場合には、結構重要なイベントなのだが・・・。
windows formにはshownイベントは存在するが、そこでform上に配置した独自カスタムの描画後の処理もやれということなのだろうか。しかし他に描画後に処理をするイベントが存在しないため、面倒でも親のフォームのshownイベントを使うしかないのか。できればカスタムコントロール(ユーザコントロールとも言うかな?あるいはクラスライブラリ?)だけで完結したかったのだけれども。