【VB.NET】アプリの起動や動作の高速化のコツ

このQ&Aのポイント
  • VB.NETで作成したアプリの起動や動作を高速化するためのコツをまとめました。
  • 実行速度が遅くなっている原因として、コードの最適化や無駄な処理の削除が考えられます。
  • また、配慮すべきポイントや効果的なテクニックも紹介しています。
回答を見る
  • ベストアンサー

【VB.NET】作成したアプリの起動や動作の高速化のコツ

【VB.NET】作成したアプリの起動や動作の高速化のコツ  今晩は,いつも皆様のおかげで勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  今まで毎晩、VB.NETでエクセルが動くのが楽しく、 無心で新しい機能ばかり追加いたしてまいりましたが、 気がつくと起動も動作もどんどん遅くなっております。。orz  現在、コードが10000行くらい、コントロールの数が 100個くらいでございます。 一応、「Paintイベントを必要の無い時にまでむやみに呼び出したり しない方がよいのだろうな。。」くらいの配慮はいたしておりますが、 他に注意した方がよい点や、コード上のテクニックなど何も存じません。。  もしお詳しい方がいらっしゃいましたら,初歩的な事でも 結構でございます。是非ともアドバイスいただきたく どうぞよろしくお願いいたします。

  • MKT_
  • お礼率99% (329/330)

質問者が選んだベストアンサー

  • ベストアンサー
  • machua
  • ベストアンサー率71% (28/39)
回答No.2

私が、C#でExcel出力アプリを作成したときの経験です。 (企画向けプロトタイプですが) ソースが見えないので何とも言い難いのですが、 ・Excelへの出力は一括で出力する(Excelで処理しない) ・ngenというツールを使用してみる くらいでしょうか。 当方はC#ですが、.Netであれば上記は共通かと。 ngenについては参考URLを参照ください。

参考URL:
http://konuma.txt-nifty.com/blog/2006/05/net_framework_f01c.html
MKT_
質問者

お礼

 どうもありがとうございます!! >ソースが見えないので何とも言い難いのですが 漠然とした質問で申し訳ございません^^; ご閲覧・アドバイスいただきまして、感謝いたします。 >ngenについては参考URLを参照ください。 リンクをどうもありがとうございます! 初めて触れる知識ばかりでございます。.NETは 奥が深いですねー。。。どこまでやっても 新しい知識が次々と。。 アドバイスいただいた点にしっかり留意して コーディングするようにいたします!!  この度はご閲覧・アドバイスいただきまして、 どうもありがとうございました!!m(_ _)m

その他の回答 (1)

  • Ishiwara
  • ベストアンサー率24% (462/1914)
回答No.1

ごく一般論ですが、多くの場合「ループの中をムダに回っている」ことが多いようです。「もう回らなくてよい」というフラグを立ててサッサと抜け出してしまうとか、配列の中を「お掃除」するくらいなら、削除してまた作るとか、大きな配列を作るのをやめて必要最小限な大きさのものを作るとか、並べ替えの方式を変えてみるとか… 特に2重・3重~のループは要注意です。私は、Microsoft社の参考プログラムがあまりに時間がかかるので、1行交換したら、所要時間が数百分の1になった経験があります。

MKT_
質問者

お礼

 どうもありがとうございます!!m(_ _)m  初心にかえれ、でございますね。試しに PaintイベントにLabel1.Text = Label.Text + 1 などといたしましたところ、毎回数回走っているSubが いくつかございました^^ (なぜ走っているのか原因不明ですが。。orz        今から追求してまいります。。)  この度はご閲覧・アドバイスいただきまして、 どうもありがとうございました!!!

関連するQ&A

  • Paintイベントを抑制する方法

    Paintイベントを抑制する方法  今晩は,質問させていただきます. どうぞよろしくお願いいたします. Form1.Visible = False   :   : '(この間、Form1上の変更は無し)   : Form1.Visible = True '(←ここで重くなります) とした時に、Form1上のコントロールのPaintイベントが 走るのを抑制したいのでございますが、そのような方法って あるのでございましょうか?  Form1上のコントロールが多く(30個くらいありますorz) これらのPaintイベントが一度に同時に 走ってしまうので、重くなってしまいます。。。 個々のコントロールを触ったときにだけ.Paintイベントが 走ってくれればよいのでございますが。。  何か良さそうな方法などございましたら、是非とも アドバイスいただきたくお願い申し上げます。

  • 多重起動での同期動作

    よろしくお願いします。 VB2005にて開発していますが、アプリケーションを場合によって多重起動し、ボタンのクリックなどを同期的に発生させたいと考えています。 つまり、どれか一つのボタンを押すと、他の分身たちも同じクリックイベントが発生する。といった事です。 VB WH_KEYBOARD_LL や PostMessage などで色々やっては見たのですが、どうも思ったような動作をしません。 「それは無理だ」とか、「#$%%&で出来るだろ?」みたいなアドバイスだけでも戴けると有難いです。

  • パソコンの起動・動作の高速化についてご教授ください。OSはWindow

    パソコンの起動・動作の高速化についてご教授ください。OSはWindows XPです。 RegistryBoosterというプログラムからレジストリエラーが1000あると表示されたのですが、エラーを修復するにはどうすればいいでしょうか?そもそも、レジストリエラーの修復は高速化に有効でしょうか? また、エラーが多ければOSの再インストールが有効ではと考えています。パソコンの高速化にOSの再インストールは有効でしょうか?詳しい方よろしくお願い致します。

  • vbで作成したアプリをサービスとして実行

    vbで作成したフォームアプリケーションをサービスに登録し、Windowsが起動時に自動で実行するようにしたいのですが、vbで作成したフォームアプリケーションをサービスに登録する方法がわからないのでわかる方がいらしたら、教えていただきたいと思います。 アプリの動作は、デバイスの抜き差しの監視アプリです。

  • VB6で作成したEXEはそのままXPeで動作する?

    VB6.0(VB.NETではない)でタッチパネルコンピュータ用のUI画面を作成しています。 画面上のコントロールは、ボタンやラベルやリストなど、ありふれたものを使用しています。 で問題は、垂直スクロールバーなのですが、標準のスクロールバーをそのまま使わず、 以下のように、ボタンとスクロールを組み合わせています。     ---  |▲|  ←上方向ボタンはButtonコントロール   ---   |  |   |  |  ←ここはVScrollBarコントロール   |  |   ---  |▼|  ←下方向もButtonコントロール   --- 問題は、このプログラムの実行形式(.EXE)がWindows XPでは正常に 動作するのに、Windows XP Embdedd上では正常に表示されません。 垂直スクロールコントロールの個所に、オリジナルのScrollBarの 上方向ボタンや下方向ボタンが中途半端に表示されて、見苦しい状態に なっており、困っております。 XP Embededdは、XPのサブセットであり、XP向けのプログラム機能を 全てサポートしていない、と聞いたことがありました。 実際はどうなのでしょうか? 標準コントロールや各種イベント処理(例えば、Activateとか)など一部 XPの実装と異なるのでしょうか? ご教示頂ければ助かります。 以上、よろしくお願い致します。

  • VB.NETでグラフィックを描くと消えてしまいます

    VB.NETを使って間もないですが、PaintBox_paintイベント外にDrawLineを使って線を引くと表示されません。PaintBox_paintイベント内に書くと表示されますがそれ以外ではだめです。オートリードロウを使おうとしましたが VB.NETではありませんでした。さらに新しいウインドウをかぶせると グラフィックがかぶさったところだけ消えてしまいます。 MSDNを見てもよくわかりません。 解決方法をご存知の方、宜しくお願いいたします

  • 【VB2008】2つのFormの上下を切り替える方法。。。

    【VB2008】2つのFormの上下を切り替える方法。。。  今晩は,いつも勉強させていただいております. 質問させていただきます.どうぞよろしくお願いいたします.  2つの重なったFormを切り替えるときに今までは Form1.Visible = False Form2.Visible = True などといたしておりましたが、その度に膨大な量の .Paintイベントが走っていることに気づきましたゆえ、 常に重ねておいて上下を切り変えればよいかな?と考えました。  そこで、 Form2.Activate や Form2.Owner = Form1 などといたしましたが変化がございません。。 検索いたしましてもなかなか出てこないのですが、 他に何か方法はございますでしょうか??  もしお詳しい方がいらっしゃいましたら,是非ともアドバイス いただきたく、どうぞよろしくお願いいたします。

  • ギターのコードチェンジの時の動作

    例えば8ビートの速度でピッキングで ギターをコードチェンジする時に、最後の一拍を早めに抑えているコードを放棄して 次のコードを押さえる動作に入ったほうがよいと聞きましたが。 この時最後の一拍は開放弦を鳴らすのでしょうか? それとも他になにか空振りするとかその他のテクニックがありますか? まだ初心者なのでチェンジも遅くなかなか上手くコードチェンジできていません。

  • C#でマウスのドラッグで範囲を選択し画像を取得する

    マウスのドラッグで範囲を選択し画像を取得してPictureBoxに表示 という動作をC#でやりたいのですが、参考になるサイトがVB関連しかなく、困っています。 VBのコードをC#に変換するサイトを見つけたので、下記のサイトで変換してみました。 http://www.developerfusion.com/tools/convert/vb-to-csharp/ 変換しC#でイベントハンドラの名前を修正したり、構文的なエラーを潰し、デバックの起動までは辿りつけたのですが、動作が全く機能していません。 MessageBoxを使いどの動作まで機能しているのか調べたところ、PictureBox1_MouseDown内の動作や、Botton1_Click内の動作といった単純な機能すら動いていませんでした。 コピーペーストしたコードを消し、デザインフォームでButton1をダブルクリックし、その中に手打ちでコードを入力しても駄目だったので、原因がわからず困っています。 原因か解決方法をご存じの方がいらしたら、教えて下さると幸いです。 よろしくお願いします。

  • Windows64BitOSでVB5.0のPG起動

    概要  vb5.0で作成されたプログラムをWindows7 64Bit 環境で起動(ランタイム)させたい 調べた事  (1)起動するPCにて「プログラム互換ウィザード」の設定が必要    →これによりWindows7での動作が可能となる  (2)起動するPCにて勝手に「WOW64」がvb5.0のPGを32BitのPGと判断しエミュレートする    →これにより64bitでの動作が可能になる 質問内容  (1)そもそも上記(1)(2)の対応で動作するものなのか しない場合はこまごまとした制約事項    があるのであればどのような内容なのか  (2)上記(2)のwow64 という仕組みは vb5.0のPGを32bitとどのように判断しているのか    また判断させるためにしておかなければならない処理は存在するのか となります。私の周りではみな「動かしてみて動けば動く」との意見ですが、 「動かしてみて」の部分が曖昧で全てのソースコードを通過するテストは難しく 事前に知りえる問題点を収集したく質問した次第です

専門家に質問してみよう