.NET 対 Win32API

解決


lemon  2007-07-22 05:32:35  No: 65767

Lemonと申します。

これまで VC + SDK スタイルで開発してきたアプリをリプレー
スすることになり開発も VS2005を利用しようと言うことにな
りました。

ある人は時代の流れということで C# + .NET framework の利
用を推奨するのですが VC + SDKスタイルで直接APIを駆使する
のとではどれぐらいのパフォーマンスダウンを見積もる必要が
あるのかがわかりません

アプリの内容は OpenGLを利用したシミュレータですが
ゲームのような激しい動きはありません、ただ別スレッドで
通信処理や数値演算処理が走っています。

私自身が .NETが何者かつかめていないのでかなりとんちん
かんな質問になっているかもしれないのですが
このあたりに詳しい方のご意見をお聞かせ願えないでしょうか

よろしくお願いいたします。


YuO  2007-07-22 09:05:40  No: 65768

パフォーマンスに関しては,やってみないとわからないとしか答えようがありません。
実行時最適化のかかるC#の方が,C/C++よりも速くなる可能性は十分にあり得ます。


lemon  2007-07-22 16:28:47  No: 65769

YuOさん
コメントありがとうございます。

>パフォーマンスに関しては,やってみないとわからないとしか答えようがありません。

プロトタイプでも作って検証するのが一番ですね

>実行時最適化のかかるC#の方が,C/C++よりも速くなる可能性は十分にあり得ます。

若干古いのですが技術評論社にこんなページがありました。
http://www.gihyo.co.jp/dennou/article.php/v92/07/

このページでは .NET Frameworkを使う事に対してやや否定的で
従来の開発スタイルがパフォーマンス的には優れている事を示唆
しています。 でも C#が最適化に優れているのであれば
C# + SDK(Win32API) も現実的な選択となりうるのでしょうか?
あるいは C#で 非.NET framework はナンセンスなのでしょうか?


どら  2007-07-23 21:10:01  No: 65770

Win32 APIはいい意味で「廃れた」APIです。
古くから改良が重ねられたものだけあって、理解できれば自分好みのプログラ
ムが作成できるかな(と僕は思っています)。
ただ、Win32 APIを利用して1からプログラムを作成するには、Windowsのプロ
グラムがどう動いているか(Winmain関数やウインドウプロシジャ等の中身)を
ある程度理解しないと、ウインドウベースやダイアログベースのプログラムを
作るのは難しいです(僕ははじめにすごく苦労しました・・・)。

逆に.NET Framework・MFCなどについては、比較的そこまで気にしなくても、
ある程度のプログラムは簡単に作れると思います。

僕の場合は、ちまちまとしたことが好きなので完全にAPIのみで作成していま
す(好みの問題ですけどね)。

ちなみに、C#でAPI関数を呼び出すにはDllInport等で利用できるみたいですね
(C#の事はよく知りませんが、C# Win32 APIでググると結構でてきますよ)。
僕が見たページは
http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html
です(参考までに・・・)


YuO  2007-07-23 22:28:43  No: 65771

> このページでは .NET Frameworkを使う事に対してやや否定的で
> 従来の開発スタイルがパフォーマンス的には優れている事を示唆
> しています。

うーん,編者の個人的な感想以上のものを見いだせないのですが……。
私はよっぽどのことが無い限り,有意な差は出ないだろうと思っていますが,実測してみない事にはわかりません。

> でも C#が最適化に優れているのであれば
> C# + SDK(Win32API) も現実的な選択となりうるのでしょうか?

C# + Win APIはあまり現実的ではありません。
P/Invokeのための宣言も大量に必要ですから。

必要な部分だけAPI,というのはアリです。
APIのすべてを.NET Frameworkがサポートしているわけではないので。

OpenGLの場合だと,既存のラッパライブラリを使ってしまえば,
APIを呼び出す必要はあまりないようですが……。


lemon  2007-07-24 15:56:10  No: 65772

どらさん、Yuoさん ありがとうございます。

お二人のコメントでなんとなく方向が見えてきたような気がします。
もちろんわたしの潜在的な?希望もあり VC + SDK で突き進もうと
思います。

> ある程度理解しないと、ウインドウベースやダイアログベースのプログラムを
> 作るのは難しいです(僕ははじめにすごく苦労しました・・・)。

わたしは頭が固いのでどらさん以上に苦労した口です。
 DOS時代の手続き型プログラミングが染みついていて
イベントドリブンの概念がなかなかピンと来ませんでした
最初は MFCに挑戦しましたが結局挫折し SDKも何度も挫折
しそうになりましたがなんとか作れるようになりました。
この BBSでアドバイスをして下さっている常連の方々の
頭の良さがうらやましいかぎりです。

> うーん,編者の個人的な感想以上のものを見いだせないのですが……。
> 私はよっぽどのことが無い限り,有意な差は出ないだろうと思っていますが,実測してみない事にはわかりません。

それが一番納得できる方法ですね
.NET frameworkでプロトタイプを作ること自体、時間的にも
技術的にもきついのですがチャレンジしようと思います。

> C# + Win APIはあまり現実的ではありません。
> P/Invokeのための宣言も大量に必要ですから。

大変、参考になりました。
ありがとうございます。


lemon  2007-07-24 20:40:29  No: 65773

スペルミスしました Yuoさんではなく YuOさんでした。
失礼しました。m(__)m

それと、検証はこれからですが
自分としての方向性は固まったので解決とさせていだきます。
コメントをくださった皆さんどうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加