C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

VBScriptのオブジェクトへのアクセスが遅くなった? /おろちまる (18/08/11(Sat) 18:01) #88239
Re[1]: VBScriptのオブジェクトへのアクセスが遅くなった? /はまぐり (18/08/13(Mon) 09:56) #88246
  └ Re[2]: VBScriptのオブジェクトへのアクセスが遅くなった? /おろちまる (18/08/17(Fri) 07:18) #88268
    └ Re[3]: VBScriptのオブジェクトへのアクセスが遅くなった? /おろちまる (18/08/17(Fri) 07:18) #88269 解決済み
      └ Re[4]: VBScriptのオブジェクトへのアクセスが遅くなった? /おろちまる (18/10/03(Wed) 22:18) #88837 解決済み


親記事 / ▼[ 88246 ]
■88239 / 親階層)  VBScriptのオブジェクトへのアクセスが遅くなった?
□投稿者/ おろちまる (1回)-(2018/08/11(Sat) 18:01:29)

分類:[VBScript] 

VBScriptで書いたプログラムが遅い気がしまして調査しています。

プログラムの動作が遅くて調査しましたところ
オブジェクトのメソッドを呼ぶのが遅いようでした。

そこでオブジェクトのメソッドを呼ぶ時間とグローバルなメソッドを呼ぶ時間を比較してみました。
オブジェクトのメソッドの呼び出しはグローバルなメソッドの呼び出しの2200倍時間がかかりました。

昔動かした時はもっと速かったような気がするのですが、記憶に
残っておらず記録も残していなかったのでわかりません。

昔からこれくらい差があるものでしたでしょうか?
みなさんの環境ではどんなものでしょうか?

実行結果だけでも教えていただけると助かります。

プログラムをfileName.vbsという名前で保存して
コマンドプロンプトからcscript fileName.vbsで実行できます。

以上、よろしくお願いいたします。

[試した環境]

OS 名: Microsoft Windows 10 Home
OS バージョン: 10.0.17134 N/A ビルド 17134

[試したプログラム]

Option Explicit

Main

Sub Main()
	Dim o, t, i
	Const c = 65536

	Set o = New Obj
	
	t = Timer()
	For i = 1 To c
		o.Method
	Next
	t = Timer() - t
	WScript.StdOut.WriteLine "Object: " & FormatNumber(t, 1)

	t = Timer()
	For i = 1 To c
		Method
	Next
	t = Timer() - t
	WScript.StdOut.WriteLine "Global: " & FormatNumber(t, 1)
End Sub

Sub Method()
End Sub

Class Obj
	Sub Method()
	End Sub
End Class


[試した結果]

Object: 28.6
Global: 0.0

[ □ Tree ] 返信 編集キー/

▲[ 88239 ] / ▼[ 88268 ]
■88246 / 1階層)  Re[1]: VBScriptのオブジェクトへのアクセスが遅くなった?
□投稿者/ はまぐり (52回)-(2018/08/13(Mon) 09:56:06)
No88239 (おろちまる さん) に返信

c = 33554432では差がなかったので512倍のc = 33554432で実行しました

OS 名: Microsoft Windows 7 Professional
OS バージョン: 6.1.7601 Service Pack 1 ビルド 7601

Object: 30.9
Global: 9.5

3倍ちょっとの差しかありませんでした
オブジェクトのアクセスが遅いのは環境に依存することは間違いなさそうですが
2200倍は開きが大きいというか私の古いマシンより512倍も遅いのは
何かよからぬことが起きてることを予感させるには十分な出来事のように思われるわけであります

名探偵はまぐりの推理ではMicrosoftはPowerShellに力を入れているから
VBScriptの使用率を下げるためにWindows 10でわざとVBScriptが遅くなるようにしたのではないかと
グローバルのメソッドが速いままなのはあれですよ

以上

[ 親 88239 / □ Tree ] 返信 編集キー/

▲[ 88246 ] / ▼[ 88269 ]
■88268 / 2階層)  Re[2]: VBScriptのオブジェクトへのアクセスが遅くなった?
□投稿者/ おろちまる (3回)-(2018/08/17(Fri) 07:18:22)
はまぐり探偵さん

ありがとうございます。
やっぱり昔は速かったんですね。

VBScriptは死に行く運命なんでしょうか。
常用するのが難しいほどの性能なので乗り換え先を探そうと思います。

ありがとうございました。
[ 親 88239 / □ Tree ] 返信 編集キー/

▲[ 88268 ] / ▼[ 88837 ]
■88269 / 3階層)  Re[3]: VBScriptのオブジェクトへのアクセスが遅くなった?
□投稿者/ おろちまる (1回)-(2018/08/17(Fri) 07:18:51)
No88268 (おろちまる さん) に返信

解決済み
[ 親 88239 / □ Tree ] 返信 編集キー/

▲[ 88269 ] / 返信無し
■88837 / 4階層)  Re[4]: VBScriptのオブジェクトへのアクセスが遅くなった?
□投稿者/ おろちまる (4回)-(2018/10/03(Wed) 22:18:33)
No88269 (おろちまる さん) に返信

Windows10をバージョン1809に更新したところ

Object: 30.3
Global: 6.1

復活しました

Windows10のバージョンは1803が遅いようです
情報共有まで
解決済み
[ 親 88239 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -