処理の速さについて

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
ゲスト

処理の速さについて

#1 投稿記事 by ゲスト »

同じ処理(例えばファイルの読み書き)を行うときに、
標準関数とWin32APIで、どちらを使用した方が高速に動作しますか?
tak
記事: 162
登録日時: 2005年5月31日(火) 07:49

#2 投稿記事 by tak »

たとえ標準関数といえど大抵は最終的に Windows API を呼び出すので処理速度に大差はないと思いますが、直接 WinAPI を叩いた方が余分な処理が入らない分だけ高速なのではないでしょうか。
念のため言っておきますが、ファイル入出力に限って言えば CPU が動作する速度からするとディスクアクセスは比べ物にならないぐらい低速なので、さきの僅かな時間差に囚われて WinAPI を呼び出すことは全く理に適っていません。(非同期 I/O やキャッシュ機構があれば話は別です。)

現実的にはどちらを利用してもたいして変わらないというのが僕の意見です。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#3 投稿記事 by konisi »

僕もtakさんとそんなに変わらない意見です。

DLLから関数を呼び出すのより標準関数から呼び出すほうがずっと処理が速いので、標準関数が現在のABコンパイラによって適度に最適化されていれば標準関数を使うほうが速いわけですが、他のところで無駄があればDLLの方が速い。

と言う事で標準関数を使うのとWin32APIを叩くのとどちらが速いかと言われればどちらとも取れません。ただ、takさんが言ったようにファイルの読み書きについて言えばそもそもハードディスクへアクセスするのに相当時間がかかるのであんまり変わらないと思います。

数式を弄る関数がDLLにあったとしたら、DLLから呼び出すのと同内容の自作関数を呼び出すのとではどちらが速いとは一概に言えません。
DLLの作者が相当なまでに速度に対して凝っていればDLLの方が速いことだってありえるわけで。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
返信する