3

我知道获取 Google Chrome 扩展 ID 的两种方法:

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 扩展程序来对三种已知的检索 Chrome 扩展程序 ID 的方法进行基准测试:

  • 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)开发版的基准图像

正如我们所见,chrome.runtime.idwins

注意#1:您可以在此处下载扩展的 zip 存档

注意#2:我曾经performance.now()获得准确的时间。

注意#3:我添加chrome.runtime.id到基准工具中。感谢康斯坦丁·斯莫利亚宁!

于 2012-09-19T18:23:53.333 回答
0

似乎从 chrome 22 开始,获取扩展 ID 的最佳方法是 built-in property chrome.runtime.id请参阅文档。

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