Firefox addon nsIProperty.get到nsIFile以外的内容-获取特殊路径字符串的最快方法

Firefox addon nsIProperty.get到nsIFile以外的内容-获取特殊路径字符串的最快方法,firefox-addon,Firefox Addon,是否可以使用nsIProperty.get将特殊路径获取到非nsIProperty文件中?我试过串,但没用。一定有别的事情,而不是它应该在正确的,否则他们为什么要把它作为一个论点 我在寻找获得特殊路径字符串的最快方法,因为这种事情发生在面板元素的200ms动画上,这些时间对我来说至关重要 以下是一些速度分析: // FileUtils.jsm :: getFile // average time: 3.85ms console.time('path'); var path = FileUtils

是否可以使用nsIProperty.get将特殊路径获取到非nsIProperty文件中?我试过串,但没用。一定有别的事情,而不是它应该在正确的,否则他们为什么要把它作为一个论点

我在寻找获得特殊路径字符串的最快方法,因为这种事情发生在面板元素的200ms动画上,这些时间对我来说至关重要

以下是一些速度分析:

// FileUtils.jsm :: getFile
// average time: 3.85ms
console.time('path'); var path = FileUtils.getFile('DefProfRt', []).path; console.timeEnd('path'); console.log(path);

// nsIDirectoryService :: nsIProperties :: get - nsIFile
// average time: 0.07ms
console.time('path'); var path = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get('DefProfRt', Ci.nsIFile).path; console.timeEnd('path'); console.log(path);


// OS.Constants.Path
// average time: 0.12ms
console.time('path'); var path = OS.Constants.Path.profileDir; console.timeEnd('path'); console.log(path);

我不明白为什么OS.Constants.Path比nsIProperties.get花费的时间更长。我认为OS.Constants.Path是硬编码的。

这三种方法都以相同的本机代码结尾,但与其他两种方法相比,
NSDirectoryService
方法涉及的javascript更少

您不能再加快了,nsIFile在这里不是瓶颈,因为没有文件系统操作发生。仅仅是字符串连接


如果0.07ms不够好,说明您做错了。

如果您的时间关键代码中需要此字符串,为什么不在时间关键期之前执行此操作?在关键时期,您得到的实际情况是否取决于用户输入?这可以作为启动的一部分完成,也可以在激活后但在动画启动之前完成。如果它是在启动时完成的,并且不是为了显示Firefox UI而需要做的事情,那么它可以很容易地延迟到Firefox UI激活并可供用户使用之后,方法是将其放入延迟后调用的函数中。谢谢Mayken,我只是在编一个借口,因为我想没有人会回答:P我只是想尽快:P谢谢,这已经足够好了,但我只是在寻找最快的。我想知道你是否知道为什么OS.Constants比NSDirectoryService花费的时间更长?我认为这是最少的js方法。我还想知道为什么
get
的第二个参数总是
nsIFile
?它并不总是
nsIFile
AChromDL
APluginsDL
SrchPluginsDL
返回
nssimplenumerator
的实例。这也使得服务更加灵活,并对未来的扩展开放。哦,超级酷,谢谢你!我将在MXR上搜索它们:)你怎么知道它们返回了NSIMPLEEnumerator我在MXR上找不到它们:(