Opened on 09/15/2016 at 06:51:58 AM
Last modified on 11/17/2016 at 10:11:41 AM
#4432 new change
FilterEngine is created for too long
Reported by: | asmirnov | Assignee: | asmirnov |
---|---|---|---|
Priority: | P3 | Milestone: | |
Module: | Libadblockplus-Android | Keywords: | |
Cc: | sergz, fhd | Blocked By: | #4399 |
Blocking: | Platform: | Android | |
Ready: | yes | Confidential: | no |
Tester: | Unknown | Verified working: | no |
Review URL(s): |
Description (last modified by asmirnov)
Background
We need FilterEngine instance for AdblockWebView to perform resource loading filtering and element hiding.
Currently FilterEngine instance is created for 4 seconds (tested with Samsung Note 3) and it looks not good as the user will be unable to load webpages until it's created.
What to change
One need to understand the reason and optimize it (probably replace sync invocation with async one or smth else).
Attachments (1)
Change History (8)
comment:2 Changed on 09/15/2016 at 07:04:29 AM by asmirnov
comment:3 Changed on 09/15/2016 at 07:10:42 AM by asmirnov
It's because of JS init done:
https://hg.adblockplus.org/libadblockplus/file/tip/src/FilterEngine.cpp#l145
sleeping:
https://hg.adblockplus.org/libadblockplus/file/tip/src/FilterEngine.cpp#l164
java JsEngine is created with the same file root context.getCacheDir() (so probably it could perform loading once):
/** * Build JsEngine required to build FilterEngine * @param context context * @param developmentBuild if it's dev build * @return JsEngine */ public static JsEngine buildJsEngine(Context context, boolean developmentBuild) { JsEngine jsEngine = new JsEngine(buildAppInfo(context, developmentBuild)); jsEngine.setDefaultFileSystem(context.getCacheDir().getAbsolutePath()); // js engine fs root jsEngine.setWebRequest(new AndroidWebRequest(true)); // 'true' because we need element hiding return jsEngine; }
comment:4 Changed on 09/15/2016 at 07:35:21 AM by sergz
- Cc sergz added
comment:5 Changed on 09/15/2016 at 07:38:14 AM by asmirnov
- Cc fhd added
comment:6 Changed on 11/17/2016 at 08:05:30 AM by asmirnov
11-17 13:04:47.451 3510-3510 D/Adblock: Creating adblock engine ... 11-17 13:04:47.471 3510-3510 W/AdblockEngine: Create 11-17 13:04:47.471 3510-3510 W/AdblockEngine: Create JsEngine 11-17 13:04:47.521 3510-3510 D/AdblockJni: Creating c++ JsEngine 11-17 13:04:47.541 3510-3510 D/AdblockJni: Creating c++ JsEngine done 11-17 13:04:47.551 3510-3510 W/AdblockEngine: Create JsEngine done 11-17 13:04:47.561 3510-3510 W/AdblockEngine: Create FilterEngine 11-17 13:04:47.581 3510-3510 D/AdblockJni: Creating c++ FilterEngine 11-17 13:04:54.321 3510-3510 D/AdblockJni: Creating c++ FilterEngine done 11-17 13:04:54.321 3510-3510 W/AdblockEngine: Create FilterEngine done 11-17 13:04:54.321 3510-3510 W/AdblockEngine: Updating subscription URLs 11-17 13:04:55.121 3510-3510 W/AdblockEngine: Updating subscription URLs done 11-17 13:04:55.121 3510-3510 D/Adblock: Adblock engine created
comment:7 Changed on 11/17/2016 at 10:08:52 AM by asmirnov
log with FS routines (see FS::):
11-17 15:06:17.001 2893-2893 D/Adblock: Creating adblock engine ... 11-17 15:06:17.021 2893-2893 W/AdblockEngine: Create 11-17 15:06:17.021 2893-2893 W/AdblockEngine: Create JsEngine 11-17 15:06:17.071 2893-2893 D/AdblockJni: Creating c++ JsEngine 11-17 15:06:17.111 2893-2893 D/AdblockJni: Creating c++ JsEngine done 11-17 15:06:17.121 2893-2893 W/AdblockEngine: Create JsEngine done 11-17 15:06:17.141 2893-2893 W/AdblockEngine: Create FilterEngine 11-17 15:06:17.141 2893-2893 D/AdblockJni: Creating c++ FilterEngine 11-17 15:06:17.161 2893-3000 D/AdblockJni: FS::Read from /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/prefs.json 11-17 15:06:17.161 2893-3000 D/AdblockJni: FS::Read from /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/prefs.json done 11-17 15:06:17.221 2893-3002 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini 11-17 15:06:17.221 2893-3002 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini done 11-17 15:06:17.301 2893-3007 D/AdblockJni: FS::Read from /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini 11-17 15:06:17.301 2893-3007 D/AdblockJni: FS::Read from /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini done 11-17 15:06:22.001 2893-2893 D/AdblockJni: Creating c++ FilterEngine done 11-17 15:06:22.001 2893-2893 W/AdblockEngine: Create FilterEngine done 11-17 15:06:22.001 2893-2893 W/AdblockEngine: Updating subscription URLs 11-17 15:06:22.011 2893-3328 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini 11-17 15:06:22.011 2893-3328 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini done 11-17 15:06:22.011 2893-3329 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns-backup1.ini 11-17 15:06:22.021 2893-3329 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns-backup1.ini done 11-17 15:06:22.361 2893-2893 W/AdblockEngine: Updating subscription URLs done 11-17 15:06:22.361 2893-2893 D/Adblock: Adblock engine created 11-17 15:06:22.381 2893-2893 D/Adblock: Applying saved adblock settings to adblock engine 11-17 15:06:22.381 2893-2893 D/Activity: performCreate Call secproduct feature valuefalse 11-17 15:06:22.381 2893-2893 D/Activity: performCreate Call debug elastic valuetrue 11-17 15:06:22.401 2893-3341 D/OpenGLRenderer: Render dirty regions requested: true 11-17 15:06:22.411 2893-3339 D/AdblockJni: FS::Write to /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini 11-17 15:06:22.461 2893-3341 I/OpenGLRenderer: Initialized EGL, version 1.4 11-17 15:06:22.461 2893-3341 I/OpenGLRenderer: HWUI protection enabled for context , &this =0xaf5170b0 ,&mEglDisplay = 1 , &mEglConfig = 8 11-17 15:06:22.461 2893-3341 D/OpenGLRenderer: Enabling debug mode 0 11-17 15:06:22.501 2893-3339 D/AdblockJni: FS::Write to /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini done 11-17 15:06:22.511 2893-3346 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini 11-17 15:06:22.511 2893-3346 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini done 11-17 15:06:22.511 2893-3347 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns-backup1.ini 11-17 15:06:22.511 2893-3347 D/AdblockJni: FS::Stat /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns-backup1.ini done 11-17 15:06:22.621 2893-2893 I/Timeline: Timeline: Activity_idle id: android.os.BinderProxy@37ec6ca9 time:45821 11-17 15:06:23.121 2893-3387 D/AdblockJni: FS::Write to /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini 11-17 15:06:23.191 2893-3387 D/AdblockJni: FS::Write to /data/data/org.adblockplus.libadblockplus.android.webviewapp/cache/patterns.ini done
Changed on 11/22/2016 at 10:34:36 AM by asmirnov
Systrace with Trace.beginSection("AdblockPlus")
It's C++ FilterEngine instance who is created for too long:
code:
log: