VB WebBrowser HTML取得時間 IEバージョン差比較
半年以上前にVisualBasicでWebBrowserクラスを用いてWebページから情報を取得するプログラムをいくつか制作していました。同じページをInternetExplorer(以降IE)とVBフォーム内のWebBrowser両方で表示させ見比べながら,どこのボタンを押すのかなどを探りつつ作業を進めていくのですが,何故だが複数の特定ページでWebBrowser側の表示や挙動がおかしい。結局,原因が分からないままそのプログラムは後で検証しようと棚上げにしていました。
その後,偶然ネット徘徊の情報でWebBrowserは内部的にはIEが動作しており,しかもバージョンがかなり古い「IE7」であるとのことを知り,合点がいくと納得しました。該当のWebサイトは昨年4月のWindowsXPサポート終了に合わせてIEのサポートがIE8以降に変更されていました。WebBrowserのIEバージョンを変更して近々棚上げプログラムの制作再開を予定しています。
で,1つ疑問が湧きました。「IEのバージョンが新しい方が高速なはずだ!(根拠不明)」。ならばバージョンの違いでHTMLを読み込む速度がどの程度異なるのか是非知りたい,と。
と言うことで早速,前回の「VB
HTML取得時間比較 WebClient,WebBrowser,IE」のプログラムコードをほぼそのまま使用し検証してみました。
前回は文字羅列のHTMLで100KByteと10MBteyのファイルを使用しました。半角の英文字(A~Z)を300桁×容量に合う行数としていました。今回は更に桁数が100桁,200桁のものも準備しました。
また,例えば10MBのファイルだと300桁×34997行とかになりますが現実的にそんなHTMLファイルは存在しないでしょうから,ごく普通の,HTMLが10KB程度に写真3枚100KB程度のファイルも準備し,計7種類のファイルを4種の方法でHTML取得し時間を比較してみました。
WebBrowseのIEバージョンは最新の「IE11」とサポート外となりつつある「IE7」を比較しています。
VisualBasic HTMLファイル取得時間比較 | |||
項目 | 取得回数 | 平均時間[ms] | WB IE7比 |
①HTML 100KB 半角英文字100桁×1004行 | |||
IE11 | 22 | 789 | |
WB IE11 | 22 | 221 | 1.1倍 |
WB IE7 | 28 | 202 | |
WC | 22 | 22 | |
②HTML 100KB 半角英文字200桁×506行 | |||
IE11 | 22 | 717 | |
WB IE11 | 22 | 199 | 1.1倍 |
WB IE7 | 28 | 184 | |
WC | 22 | 22 | |
③HTML 100KB 半角英文字300桁×338行 | |||
IE11 | 20 | 727 | |
WB IE11 | 20 | 191 | 1.1倍 |
WB IE7 | 24 | 181 | |
WC | 20 | 21 | |
④HTML 10MB 半角英文字100桁×102804行 | |||
IE11 | 23 | 6058 | |
WB IE11 | 21 | 11450 | 2.0倍 |
WB IE7 | 28 | 5644 | |
WC | 24 | 70 | |
⑤HTML 10MB 半角英文字200桁×47393行 | |||
IE11 | 22 | 8505 | |
WB IE11 | 21 | 8082 | 2.2倍 |
WB IE7 | 25 | 3630 | |
WC | 22 | 67 | |
⑥HTML 10MB 半角英文字300桁×34997行 | |||
IE11 | 21 | 7504 | |
WB IE11 | 21 | 7365 | 2.2倍 |
WB IE7 | 20 | 3317 | |
WC | 21 | 69 | |
⑦HTML 14.4KB + 画像3枚計141.3KB | |||
IE11 | 24 | 639 | |
WB IE11 | 24 | 181 | 1.0倍 |
WB IE7 | 21 | 186 | |
WC | 24 | 22 | |
WB = WebBrowser, WC = WebClient |
結果として,
自分の見当とは逆にWebBrowserでは最新のIE11よりもIE7の方が高速でした。但し,一般的なHTML容量と言える100KB以下ではほとんど差がありませんでした。また,JavaScriptが付加されている場合などは結果が変わるかも知れません。
なお,WebBrowse(IE11)とIE11オブジェクトではHTMLのファイル容量や桁数,行数で結果が逆転しており優劣は判断出来ませんでした。
WebBrowseのIEバージョンの切り替えには下記サイトを参考にさせて頂きました。
C# WebBrowserのレンダリングモード
上記のC#のコードをVBに変換し活用しました。
WebBrowseのIEバージョン切り替え VisualBasicソースコード
※レジストリを操作しますので使用は自己責任でお願いします。
-----------------------------------------------------------
Imports
System.Runtime.Serialization
Public Class Form1
Dim
FEATURE_BROWSER_EMULATION As String = _
"Software\Microsoft\Internet
Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"
Dim
FEATURE_DOCUMENT_COMPATIBLE_MODE As String = _
"Software\Microsoft\Internet
Explorer\Main\FeatureControl\FEATURE_DOCUMENT_COMPATIBLE_MODE"
Dim
userAgent As Integer = 11001 'IE11
Dim renderingMode As Integer = 110000
'IE11
Dim exeName As String = "WindowsApplication1.exe"
'デバッグ時は.vshost.exeにしておく
'Dim exeName As String =
"WindowsApplication1.vshost.exe"
Private Sub
Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim regkey1 As Microsoft.Win32.RegistryKey = _
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(FEATURE_BROWSER_EMULATION)
Dim regkey2 As Microsoft.Win32.RegistryKey = _
Microsoft.Win32.Registry.CurrentUser.CreateSubKey(FEATURE_DOCUMENT_COMPATIBLE_MODE)
'userAgent = 7000 'IE7
'renderingMode = 70000 'IE7
regkey1.SetValue(exeName, userAgent, Microsoft.Win32.RegistryValueKind.DWord)
regkey2.SetValue(exeName, renderingMode,
Microsoft.Win32.RegistryValueKind.DWord)
regkey1.Close()
regkey2.Close()
End Sub
End Class
| 固定リンク
| コメント (0)
| トラックバック (0)
最近のコメント