大量のデータをMSChartを使用して表示するときの描画時間が遅い

C#のFormアプリケーションで5000ほどのデータをChartで描画すると重い時と重くない時があったので忘備録として記述

AddXY()を利用して面グラフと折れ線グラフの2種類のデータを描画していた。
5000のデータを描画するとものすごい遅い。開発用のPCだと実は軽かったが、テスト用のウルトラモバイルPC等で描画すると10分ぐらい描画が止まる。
UIスレッドのReflesh()自体に相当負荷がかかるみたいで使いものにならない。
また、マウスオーバーで出現するツールチップを入れているとものすごく重い。

原因

原因は面グラフとツールチップ。2つが組み合わさる場合の面グラフの描画がものすごく重い。折れ線グラフの7倍ほどだった。
以下秒数

面グラフ

1.2 sec

折れ線グラフ

0.17 sec

ツールチップがない場合

面グラフ

0.0220167 sec

折れ線グラフ

0.1098249 sec


これは、同時描画数に関係ない。5000個データが有る内、10を描画しても重くなる。
(もちろん同時描画数が多くなればなるほど重くもなる。)

ということで解決策は

  • 面グラフを描画するかしないかの選択UIを作成する。
  • 面グラフを諦める
  • 他にスライドバーを設置し、描画範囲を指定する。

となると思う。


追記

      • -

処理時間はバージョンによって変動する場合があるので正確な時間計測が何よりも大事。
C#での時間計測のオススメ記述法は以下のサイトを参考。
これ以上のものに今は出会ってない。

C# デバッグ時の処理時間測定ロジックを簡潔に書く | Try&Error テクニカルブログ

Formのフォントを変更するとFormのサイズも変更される問題

FormプロパティのAutoScaleModeがデフォルトでFontであるため、[MS UI Gothic]から[Meiryo UI]等にFontを変更するとForm全体のサイズが大きくなる

f:id:sechs:20140723135738p:plain

f:id:sechs:20140723135739p:plain

図のサイズが圧縮表示されているorz

よって以下の順番が望ましい

  1. Formを選択
  2. プロパティより AutoScaleMode を Noneに変更
  3. Fontを変更
  4. プロパティの AutoScaleMode をFontへ戻す

Excelで名前の定義をしてその部分のみ塗りつぶす方法

世の中にはExcelで名前を定義した後、その範囲をひと目でわかるようにしたいという人もいるはず。

条件付き書式を使用し、簡単に実行できた。

条件付き書式の数式

=TRUE

条件に一致するときのセルの書式

(背景色の指定など、セルの書式を自由に変更)

適用先

=(定義された名前)

これだけ。


以下、詳しい手順(例:Excel 2007)

1. "数式"タブで名前の定義

  • A1:A10の範囲を"範囲1"という名前にする

2. "ホーム"タブ - スタイル - 条件付き書式 - ルールの管理 を選択

3. 新規ルール - 数式を使用して、"書式設定するセルを決定"を選択し、入力

  • "次の数式を満たす場合に値を書式設定" の欄に以下を入力

    =TRUE

  • "書式" ボタン - 塗りつぶしタブ より背景色を赤に設定

4. ルール一覧画面で、適用先を設定

=範囲1

適用先が自動的に"=$A$1:$A:$10"と変更されるが、これは挿入や、削除を行うと自動変更されたので心配なし。

Git bash用のComEmu設定

下の記事を見て色々設定してみた。

ConEmu 突っ込んだら Git for Windows の Git Bash がカッコよくなった - てっく煮ブログ

設定が多すぎるためGit bash専用化への忘備録

全体設定変更

ソフトウェア左上のアイコンクリック後 "Settings ... Win + ALT + P" を選択

1. Font変更

Main項目より Font を "Consolas" へ、Font charset を "ANSI" に変更

2. 終了時確認なし

Main - Appearance項目より Generic - Close confirmation のチェックを外す

3. 起動時に前回終了時のタブを開く

Startup項目より Start up options を "Auto save/restore opend tabs" に設定

4. スタートディレクトリを設定

Startup - Tasks項目で "4 {Git bash}" を選択

Startup dir... ボタンよりディレクトリを選択

(例) "C:\Project"をスタートディレクトリ設定した場合の注意点

-new_console:d:C:\Project%ProgramFiles%\Git\bin\sh.exe --login -i

↓ (注) 挿入されたコマンドとの間にスペース( )を入れる事

-new_console:d:C:\Project %ProgramFiles%\Git\bin\sh.exe --login -i

表示テーマ変更

  1. Git bashをタブ欄右側の Create new console ボタンから起動
  2. Git bash タブを右クリックし、View (palettes)内を選択

"Terminal.App", "Xterm"がGit bashと色が変わらない上、青色が見やすいためオススメ

ComEmu を再起動

環境


2014/11/21 追記
4のスタートディレクトリは最新のComEmuでは必要なくなっていた。3の前回終了時のタブを開くときにディレクトリもカレントディレクトリになっており、面倒なことをしなくても良くなってる。

git reset の指定パスにワイルドカード(*)を使う

git reset -- (ワイルドカードを含んだpath)

上記でOK

背景とか説明

git add . の実行後に git reset を行うと全ての登録を削除できる(unstage)

ちなみに git add は普通にワイルドカードを使う事が出来る。

git add (ワイルドカードを含んだpath)

git reset を1ファイルのみ unstage する場合は以下のコマンド

git reset (path)

同じようなファイルを複数除く場合、1つずつ unstage していくのは面倒なのでワイルドカードを使いたい場合

git reset (ワイルドカードを含んだpath)

とすると以下のエラーが出現

fatal: ambiguous argument '(ワイルドカードを含んだpath)' unknown revision or path not in the working tree.

Use '--' to separate paths from revisions, like this:

'git <command> [<revision>...] -- [<file>...]'

引数がリビジョンか path か不明なため '--' を使ってはっきりさせろということ

Gitのエラー表示が丁寧すぎて便利。ありがとうございます。

StyleCop 4.7の解析でDesignerファイルを簡単に除去

StyleCopをデフォルト設定で使用していると、Visual Studioで自動作成されるDesignerファイルの警告があまりにも多く出現する。Visual Studio ...

非常に邪魔なので除去できないか調査してみるとDesignerファイルの一つ一つに

// <auto-generated />

と記述すれば警告が消えるようだが、面倒すぎたので再調査。

するとStyleCopのデフォルト設定に除外設定が存在することが発覚。 下図右側のAnalyze designer filesを変更してファイル保存すればOK

f:id:sechs:20140321205715p:plain

そういえば設定ファイルを編集するときに StyleCopSettingEditor.exe を実行するけど Settings.StyleCop を実行ファイルへD&Dして開くことはなかなか気づかなかった...

Git Bashの反応が突然なくなる問題

Git for Windows を利用しているといつの間にか文字入力すらできなくなる問題が発生していた。

解決方法が全く解らず、いつもGit Bashを再起動していたけど、
簡単な解決方法がわかったので公開

現象と原因
何も文字入力していないときにtabキーを押下すると止まる。
使用できるコマンドをtab補完するため?

解決方法
Ctrl+Cで強制停止を行うと解決しやすい

あくまで解決しやすいだけなので注意

Linuxでもcmdでも起こらないため、
なんとなくGit Bashのバグっぽい


Git (version 1.9.0-preview20140217) で確認