(abp) IO.readFromFile() on the main thread causes 800ms jank at startup (INIParser)

RESOLVED INVALID

Status

()

Firefox
Untriaged
RESOLVED INVALID
5 years ago
5 years ago

People

(Reporter: Jean Claveau, Unassigned)

Tracking

26 Branch
x86_64
Linux
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

5 years ago
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:26.0) Gecko/20100101 Firefox/26.0 (Beta/Release)
Build ID: 20130814141812

Steps to reproduce:

+ Install adblock plus and configure filters
+ Profile firefox at startup


Actual results:

Abp parses filters from INI on the main thread causing two big janks (500ms + 300ms on my laptop).

http://people.mozilla.com/~bgirard/cleopatra/#report=21cfdf8c4beeb0e497051c27fedb0835a550e5a1



Expected results:

This parse should be off the main thread (using the new OS.File api I guess).

I'm not an addon dev but it looks like an issue from adblock and not addon-sdk.




I found : 
+ https://adblockplus.org/jsdoc/adblockplus/symbols/INIParser.html
+ https://adblockplus.org/jsdoc/adblockplus/symbols/src/lib_filterStorage.js.html
+ https://adblockplus.org/jsdoc/adblockplus/symbols/src/lib_io.js.html
+ https://developer.mozilla.org/en-US/docs/JavaScript_OS.File
(Reporter)

Comment 1

5 years ago
I've opened a bug report on abp forum here : https://adblockplus.org/forum/viewtopic.php?f=11&t=17216

Updated

5 years ago
Blocks: 467520

Comment 2

5 years ago
(In reply to Jean Claveau from comment #0)
> Abp parses filters from INI on the main thread causing two big janks (500ms + 300ms on my laptop).
>
> http://people.mozilla.com/~bgirard/cleopatra/#report=21cfdf8c4beeb0e497051c27fedb0835a550e5a1

This report shows Adblock Plus saving filters, not reading them.

> This parse should be off the main thread (using the new OS.File api I guess).

Unless I misunderstand something you are wrong. The OS.File API allows *reading* files off the main thread - but Adblock Plus does that already, IO.readFromFile() is asynchronous.

The *parsing* however still has to happen on the main thread. It could happen in a worker off the main thread - but that worker would produce tons of objects as a result that would need to be sent to the main thread. The overhead would kill any advantage you could gain from that solution.

IMHO the only solution here is speeding up the processing of data. This is what I looked into (https://adblockplus.org/blog/thoghts-on-using-asmjs-for-performance-bottlenecks-in-browser-extensions, particularly the reply to comment by Jesse Ruderman) but so far I didn't have time to continue that research.

I'm resolving this as INVALID because I'm pretty certain that there is no Firefox bug involved. Let's continue in the Adblock Plus forum which is the right place for this.
No longer blocks: 467520
Status: UNCONFIRMED → RESOLVED
Last Resolved: 5 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.