• ベストアンサー

C++で組んだプログラムの高速化について

ki073の回答

  • ki073
  • ベストアンサー率77% (491/634)
回答No.7

No.5です 「ベクトル化」というのはIntel CPUの場合はSSEを使って計算することを指します。単精度浮動小数点の場合は4または8個の計算が同時にできますので結構速くなります。SSEを使うには制限があって、使えるようにプログラムを書く必要があります。 Intelのコンパイラは他のコンパイラに比べて速いバイナリを作ってくれる傾向がありますが、速いバイナリを作れるようにプログラムを書かないと速くなりません。どの部分が速度を上げられる可能性があるかは、普通はコンパイラの最適情報出力を見て判断します。(市販のコンパイラだと可能) こればっかりはソースコードを見ないと分からないし、コンパイラによっても得意不得意がありますので、試行錯誤になります。 CPUコアが4つの場合だと、何も考えずに書いた場合に比べて、ベクトル化と並列化ができれば10倍程度速くなることもあります。 最近ではGPUが使えますので、openACC対応のコンパイラがあれば、手軽に試すことができます。しかしよほど条件が良くないとCPUの方が速い結果になりますが。

yy2406
質問者

お礼

再度アドバイスして頂き、ありがとうございます。 ベクトル化や並列化を行うことで10倍程度も早くなることがあるのですね。 一度検討したみたいと思います。 ありがとうございました。

関連するQ&A

  • Visual C++ 6.0 で作成したプログラムをVisual C++ 2005 でコンパイルしたい

    visual C++ 6.0 で作成したプログラムがあります。このソースリストをVisual Studio 2005 Express Edition の Visual C++ 2005 Express Editionでコンパイルしようとしましたが、#include <Windows.h> でエラーになって先に進みません。対応したWindows.hの入手方法教えてください。 それとも、そもそも、Visual C++ 2005 Express Editionでは昔のVC++のプログラムはコンパイルできないのでしょうか?

  • Cのコンパイル

    新しい職場に移動し、いままで開発したことのないC言語でプログラムを組むことになりました。PCにvisual basic studio .netが組み込まれているのですが、これでコンパイルする方法がまったくわかりません。どうやってコンパイルすればいいのか、またはコンパイルする方法が書かれた資料などありましたら、教えてください。

  • C++プログラムに変換

    Visual Studio .NET 2003を使っているのですが、C#のプログラムをC++のプログラムに変換して使用したいのですが、可能でしょうか? またVBのプログラムもC++に変換して使用したいのですが、可能でしょうか? どうか教えてください。

  • VisualStudio c++の使い方

    最近になってvisual studioのc++をインストールしました。 学業の関係で学校のほうでプログラムを組むことが多いのですが、 そのときはいつもterapadでプログラム作成し、 teratermでコンパイル、実行をしています。 家ではVSが楽で万能ということで入れたのですが使い方がさっぱりです。 外で作ってきたプログラムをコンパイル・実行したい場合はどこに保存しどのようにすればいいのでしょうか?

  • C/C++

    こんばんわ 最近C/C++を始めたものです 最終的な目的はC/C++で書いた掲示板を作成し、 サイトのコンテンツの一部とすることなのですが まだ始めたばかりなので hello worldのスクリプトを作ることにしました 今はvisual studio .NET を使っているのですがvisual studio .NET を使わないでプログラムをウェブサーバ上で 動かすことは出来るのでしょうか? また出来るとしたらそれに必要なソフトウェアはどのようなものが必要なのでしょうか? それとvisual studio .NETを使い、コンパイルやリンクを行うとvcprojやicoやncbなど色々な拡張子のファイルが出来るのですが どのファイルにアクセスすればhello worldという文字のスクリプトを見ることが出来るのでしょうか? 最後にコンパイルはマシン語にすることなのはわかるのですがリンクとはなんなのでしょうか? リンク と調べると当たり前のようにハイパーリンクの説明が出てきまして・・・ 一気にいくつも質問をさせていただきましたが ばらばらに質問するよりはいいかなと思い一気にさせていただきました どれか一つでもご存知の方おられましたら是非 ご教授ください よろしくお願いします

  • C++ 2005 データ取得プログラム

    Visual Studio 2005 イーサネットによるデータ取得プログラム Visual Studio 2005 C++ 用いて,計測センサからイーサネットを通してデータを取得して表示させるプログラムを教えてください. 初心者なので,できれば詳しく教えて欲しいです.

  • LiEというプログラムを使いたいのですが、やり方がわかりません…

    LiEというプログラムを使いたいのですが、使い方、というか使うまでの過程で何をすればいいのか全くわかりません。 プログラム自体は以下のサイトで落とせるのですが、同サイトのマニュアルを読んでみたところ、どうやらプログラムはC言語で書かれていて、使うためにはコンパイルして.exeに書き換えないといけないらしいです。(あまりこのあたりの専門用語の意味をよく理解していません。よくわからないことを言っていたらすいません…) http://www-math.univ-poitiers.fr/~maavl/LiE/ 知り合いに聞いてみると、Visual Studioというソフトでコンパイルできると言っていたのでやってみたのですが、エラーが大量に出てきました。 知り合い曰く、Visual StudioはC++を読みとるソフトで、C言語は読みとれないのだとか。 そこでC言語を読みとれるソフトを探したのですが、どこにあるのか全くわかりません… 結局のところ、LiE.exeというプログラムを手に入れ、それを起動できる状態にしさえすれば、あとはマニュアルを読めばなんとかなると思うのですが、そこまでたどり着けません… どうすればプログラムを起動することができるのか教えていただけないでしょうか? プログラミングに関する知識はほぼ皆無なので、常識的なことから教えていただけると助かります。

  • Visual C++ Express Edition でもprintf

    Visual C++ Express Edition でもprintfを使いたい 私は、Visual C++ 2008 Express Editionを使っています。  以前はVisual Studio 2005 Professionalを使っていました。 今まではプログラムを走らせている間の変数の変化を見るために、 printf関数を使って「出力」ウィンドウに数値を表示させていました。 Visual C++ 2008 Express Editionに変更してから、 同一のソースコードをコンパイル、実行しても printf文で記述した出力内容を「出力」ウィンドウに表示させることができません。 これは、Express Edition特有のものでしょうか? printfを使って変数を表示できる方法があれば教えてください。 よろしくお願いします。

  • RS-232C接続のための VS 2008 C++のプログラム

    RS-232C接続のための VS 2008 C++のプログラム パソコンとRS-232Cで接続することで制御できるパトライト(PHE-3FB)を渡され、今週中に動かしたいのですが、私はプログラミング経験が非常に浅くどうしても、動かすことができません。加えて、実装の環境が「Visual Studio 2008 C++」のみに限られており、大変困っています。 こんな、初心者の私でもRS-232Cの通信プログラムが書けるようなサイトはないでしょうか。 Windows Visual studio 2008 C++ で書かれたサンプルプログラムのようなものがあれば非常に助かります。。。 どなたか、助けてください・・ 追記 MSCOMMコントロールはWindows Visualstudeo 2008 C++にはないのでしょうか・・

  • スタートの全てのプログラムでVBとc++が少し違う

    ・Microsoft Visual Basic 2008 Express Edition ・Microsoft Visual C++ 2008 Express Edition の2つをインストールしました。 しかしスタートの全てのプログラムを見ると C++ の方はフォルダにはいっていて、 VBの方はそのまま(裸のまま)プログラム一覧に表示されています。 Visual C++ の方はフォルダの中身は ・Microsoft Visual C++ 2008 Express Editionのアプリケーションと ・Visual Studio Toolsフォルダです。 Visual Studio Toolsの中には Visual Studio 2008 コマンド プロンプト が入っています。 これは標準の配置ですか? もしかしたら私が知らぬ間にいじったのか気になります。 OSはvistaです。 よろしくお願いします。