3

Google Chrome 拡張機能 ID を取得する 2 つの方法を知っています。

chrome.app.getDetails().id;

chrome.i18n.getMessage('@@extension_id');

それらのいずれかに関する欠点はありますか?

短いので最初のものを使用する傾向がありますが、誰が知っていますか。私は間違っているかもしれません。

- - 編集 - -

気にするのは私だけなので、それらをベンチマークするために私がしたことは次のとおりです。

console.time('t1');
for (var i=0; i < 10000; i++) { chrome.app.getDetails().id; }; 
console.timeEnd('t1');

console.time('t2');
for (var i=0; i < 10000; i++) { chrome.i18n.getMessage('@@extension_id'); }; 
console.timeEnd('t2');

結果は次のとおりです。

t1: 5190.766ms

t2: 860.697ms

i18n を使用した方が全体的にはるかに速いように見えますが、最初のほうが最初は速く、3 回または 4 回実行した後は i18n の方が優れています。

4

3 に答える 3

3

同様のクエリを実行してみてください: How to reference the version information in a Google Chrome extension?

そこでは、使用している最初の呼び出しのより広いアイデアを得ることができます。

    chrome.app.getDetails().id;
于 2012-09-18T06:21:31.913 に答える
2

最後に、Chrome 拡張機能 ID を取得する 3 つの既知の方法をベンチマークする小さな Chrome 拡張機能を作成しました。

  • chrome.app.getDetails().id;
  • chrome.i18n.getMessage('@@extension_id');
  • chrome.extension.getURL('/').slice(19, -1);
  • chrome.runtime.id;

以下の結果からわかるように、chrome.extension.getURL('/').slice(19, -1);全体的には時間がかからないように見えます、最初の呼び出しは他の呼び出しと同等です。

Google Chrome 27.0.1430.0 (公式ビルド 186115) dev のベンチマーク イメージ

ご覧のとおり、 がchrome.runtime.id勝ちます。

注 #1:ここから拡張機能の zip アーカイブをダウンロードできます。

注 #2: 以前performance.now()は正確なタイミングを取得していました。

注 #3:chrome.runtime.idベンチマーク ツールに追加しました。コンスタンチン・スモリニンに感謝!

于 2012-09-19T18:23:53.333 に答える
0

chrome 22以降、拡張IDを取得する最良の方法は組み込みのプロパティであるようchrome.runtime.idです。ドキュメントを参照してください。

console.log(chrome.runtime.id);
于 2013-01-17T22:23:01.863 に答える