See https://github.com/greasemonkey/greasemonkey/issues/2346

Dne čtvrtek 31. prosince 2015 17:13:24 UTC+1 Ben Hest napsal(a):
>
> I'm not totally sure I've tracked this to the right spot, but I'm using 
> GM_getResourceText to add some canned CSS which are mostly companions to 
> javascript libraries that I am using through @require.
>
> The main idea is to keep the resources pure and separate so I can easily 
> include them in such a way that would be similar to @require, but targeting 
> .css files.
>
> Here's a slimmed down example which exhibits the behavior:
>
> // ==UserScript==
> // @name        resourcetest
> // @namespace   resourcetest
> // @include     *
> // @require     
> http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js
> // @require     
> http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/Highcharts-4.0.4/js/highcharts.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/jquery.localScroll.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/jquery.hoverIntent.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/jquery.spellchecker.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/quantities.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/jquery.jqpagination.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/dklib/dklib.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/fixedsticky/fixedsticky.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/tooltipster-master/js/jquery.tooltipster.min.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/jquery.lazyloadxt.js
> // @require     
> https://dl.dropboxusercontent.com/u/26263360/script/lib/jquery.dragtable.js
> // @resource    buttonCSS 
> https://dl.dropboxusercontent.com/u/26263360/script/css/buttons.css
> // @resource    advCSS 
> https://dl.dropboxusercontent.com/u/26263360/script/css/advancedsearch.css
> // @resource    normalizeCSS http://yui.yahooapis.com/pure/0.5.0/base.css
> // @resource    pureCSS http://yui.yahooapis.com/pure/0.5.0/pure.css
> // @resource    fontAwesomeCSS 
> https://dl.dropboxusercontent.com/u/26263360/script/css/font-awesome.css
> // @resource    stickyCSS 
> https://dl.dropboxusercontent.com/u/26263360/script/lib/fixedsticky/fixedsticky.css
> // @resource    tooltipsterCSS 
> https://dl.dropboxusercontent.com/u/26263360/script/lib/tooltipster-master/css/tooltipster.css
> // @resource    tooltipster-shadowCSS 
> https://dl.dropboxusercontent.com/u/26263360/script/lib/tooltipster-master/css/themes/tooltipster-shadow.css
> // @run-at      document-end
> // @grant       GM_addStyle
> // @grant       GM_xmlhttpRequest
> // @grant       GM_getResourceText
> // @version     4.0
> // ==/UserScript==
>
> function addResourceCSS(){
>     var cssNames = [
>         "buttonCSS",
>         "advCSS",
>         "normalizeCSS",
>         "pureCSS",
>         "fontAwesomeCSS",
>         "stickyCSS",
>         "tooltipsterCSS",
>         "tooltipster-shadowCSS"
>     ];
>
>     for ( var x in cssNames){
>         console.time(cssNames[x]);
>         var thetext = GM_getResourceText(cssNames[x]);
>         console.timeEnd(cssNames[x]);
>         GM_addStyle(thetext);
>     }
> }
> $(document).ready(function(){
>     console.time('total');
>     addResourceCSS();
>     console.timeEnd('total');
> })
>
>
>
> The output on the console is as follows with the time for 
> GM_getResourceText to execute highlighted in red:
> 09:58:56.353 total: timer started 
> 09:58:56.354 buttonCSS: timer started 
> 09:58:56.491 buttonCSS: 136.58ms 
> 09:58:56.494 advCSS: timer started 
> 09:58:56.640 advCSS: 146.52ms 
> 09:58:56.643 normalizeCSS: timer started 
> 09:58:56.819 normalizeCSS: 175.89ms 
> 09:58:56.820 pureCSS: timer started 
> 09:58:56.959 pureCSS: 139.33ms 
> 09:58:56.962 fontAwesomeCSS: timer started 
> 09:58:57.219 fontAwesomeCSS: 257.47ms 
> 09:58:57.221 stickyCSS: timer started 
> 09:58:57.378 stickyCSS: 156.79ms 
> 09:58:57.379 tooltipsterCSS: timer started 
> 09:58:57.512 tooltipsterCSS: 133.47ms 
> 09:58:57.513 tooltipster-shadowCSS: timer started 
> 09:58:57.596 tooltipster-shadowCSS: 83.26ms 
> 09:58:57.597 total: 1244.05ms
>
> These are indeed fairly large CSS files all-together totaling 158K, but it 
> seems like the getResourceText function is taking an inordinately large 
> amount of time to execute.  There seems to be no good correlation or 
> consistancy between the size of each file as and load time different 
> resources will take longer on each run.  Concatenating the css files 
> together and calling GM_getResourceText once does decrease the total time, 
> but it's still many hundreds of milliseconds.    
>
> I've tried this in a new firefox profile with only Greasemonkey installed 
> and I've tried this in a fresh firefox portable installation, but the times 
> remain consistently in the same order of magnitude though they do vary 
> quite a bit. I've tried two other computers with the same result. I also 
> tried it in Tampermonkey for Chrome and the times were all in the low 
> single digit millisecond range.  I've had a script using this code out to 
> users for a couple years and while I haven't so precisely instrumented this 
> part of the code, it seems like it has slowed down for me at some point in 
> time.  I can't pinpoint when as I was busy with other features.
>
> Am I blind to doing something blatantly wrong?  Were there some changes in 
> how this function worked in the past year or two?
>
> Thanks,
> Ben
>

-- 
You received this message because you are subscribed to the Google Groups 
"greasemonkey-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/greasemonkey-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to