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.
