<div dir="ltr"><div>Hi devs,</div><div>I don't know if this helps as well or is related with the Profiler subject but Michel Stuyts share a QGIS plugin 
Plugin Load Times

 that measures the load time of qgis plugins (not the core but measure all the others).</div><div>More info in here:</div><div>
<p dir="auto"><em>If QGIS takes long to start, it is probably because some of the plugins you installed take a long time to load at startup.  This plugin shows the latest load time of each plugin (QGIS startup, plugin installation,...). It does not give you information about the speed of plugins when they are used. With the information provided by this plugin you can easily decide which plugins to disable, to make QGIS start faster.</em></p>
<p dir="auto">This plugin adds a toolbar button and an item to the plugin menu to see how long each plugin loads in QGIS 3. It shows the QGIS python variable <em><a href="https://github.com/qgis/QGIS/blob/b1b647349ac5d43a6f0b1a308dd7480f11dded63/python/utils.py#L358" rel="nofollow noreferrer noopener" target="_blank">qgis.utils.plugin_times</a></em> in an easy to understand window. It's possible to sort the results based on plugin name or on load time. In the latest version it also has a pie chart with the data visualized.</p>
<p dir="auto">Some core plugins are not available in the QGIS Python Variable, so they will not be shown in this plugin. For the following core plugins no information about the load time is available in "Plugin Load Times":</p>
<ul dir="auto"><li>Coordinate Capture</li><li>eViz</li><li>Geometry Checker</li><li>Georeferencer GDAL</li><li>GPS Tools</li><li>GRASS 7</li><li>OfflineEditing</li><li>Topology Checker</li></ul>

</div><div><br></div><div><br></div><div><a href="https://gitlab.com/GIS-projects/Plugin-Load-Times">https://gitlab.com/GIS-projects/Plugin-Load-Times</a> <br></div><div><br></div><div>Search in plugin manager for Plugin Load Times or</div><div><br></div><div><a href="https://plugins.qgis.org/plugins/PluginLoadTimes/">https://plugins.qgis.org/plugins/PluginLoadTimes/</a></div><div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div><br></div><div>Cheers,<br></div><div dir="ltr"><div>João Gaspar</div></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Nyall Dawson <<a href="mailto:nyall.dawson@gmail.com">nyall.dawson@gmail.com</a>> escreveu no dia domingo, 24/05/2020 à(s) 10:29:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Sat, 23 May 2020 at 22:19, Nathan Woodrow <<a href="mailto:madmanwoo@gmail.com" target="_blank">madmanwoo@gmail.com</a>> wrote:<br>
><br>
> Correct. QgsRuntimeProfiler is the tool that can do it.<br>
><br>
> <a href="https://qgis.org/api/classQgsRuntimeProfiler.html" rel="noreferrer" target="_blank">https://qgis.org/api/classQgsRuntimeProfiler.html</a><br>
><br>
> In Python you can access it using this:<br>
><br>
>  QgsApplication.instance().profiler()<br>
><br>
> An example:<br>
><br>
>    QgsApplication.instance().profiler().start("my_thing")<br>
> # long expensive stuff<br>
>      QgsApplication.instance().profiler().end()<br>
<br>
<br>
Or the newer, more Pythonic  way:<br>
<br>
   with QgsRuntimeProfiler.profile('loading something'):<br>
      # do some stuff<br>
<br>
I'd encourage plugin authors to use this in their plugins<br>
initialisation code as much as makes sense!<br>
<br>
Nyall<br>
<br>
><br>
><br>
><br>
> On Sat, May 23, 2020 at 9:38 PM Richard Duivenvoorde <<a href="mailto:rdmailings@duif.net" target="_blank">rdmailings@duif.net</a>> wrote:<br>
>><br>
>> On 5/23/20 11:42 AM, Sebastian M. Ernst wrote:<br>
>><br>
>> > @Richard How does your Citrix setup / architecture look like<br>
>> > (approximately)?<br>
>><br>
>> I'll ask around for more details, as I'm there just as a user of that setup.<br>
>><br>
>> But I did try a lot of things: and exactly what you tell: their virus<br>
>> scanner was pushing some hash version of all python files to some online<br>
>> service. So I disabled it...<br>
>> But still... And off course they are working with some network shares,<br>
>> so I will try out some of your other idea's<br>
>><br>
>> > @Nathan & @Nyall Where in QGIS' source can I find the profiling tool? I<br>
>> > just searched and could not locate it ... Would you consider adding<br>
>> > support for a Python profiler to it, e.g. [1], [2] or [3]? The relevant<br>
>> > code could (conditionally) be injected somewhere around here [4] or here<br>
>> > [5]. I have played with this idea a while ago. It works in principle,<br>
>> > but a proper integration into your GUI would be great ...<br>
>><br>
>> In my debug build, using<br>
>> export QGIS_DEBUG=5<br>
>><br>
>> I see:<br>
>><br>
>> ../src/core/symbology/qgssymbollayerutils.cpp:3936 :<br>
>> (svgSymbolNameToPath) [0ms] Svg found in alternative path<br>
>> ../src/core/qgsruntimeprofiler.cpp:80 : (end) [0ms] PROFILE: Load<br>
>> default style database/Load symbols/topo camp - 0.001<br>
>> ../src/core/qgsruntimeprofiler.cpp:80 : (end) [0ms] PROFILE: Load<br>
>> default style database/Load symbols/topo foot - 0<br>
>> ../src/core/qgsruntimeprofiler.cpp:80 : (end) [0ms] PROFILE: Load<br>
>> default style database/Load symbols/topo forest - 0<br>
>><br>
>> So:<br>
>> <a href="https://github.com/qgis/QGIS/blob/master/src/core/qgsruntimeprofiler.cpp" rel="noreferrer" target="_blank">https://github.com/qgis/QGIS/blob/master/src/core/qgsruntimeprofiler.cpp</a> :-)<br>
>><br>
>> Regards,<br>
>><br>
>> Richard Duivenvoorde<br>
>> _______________________________________________<br>
>> QGIS-Developer mailing list<br>
>> <a href="mailto:QGIS-Developer@lists.osgeo.org" target="_blank">QGIS-Developer@lists.osgeo.org</a><br>
>> List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
>> Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
><br>
> _______________________________________________<br>
> QGIS-Developer mailing list<br>
> <a href="mailto:QGIS-Developer@lists.osgeo.org" target="_blank">QGIS-Developer@lists.osgeo.org</a><br>
> List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
> Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
_______________________________________________<br>
QGIS-Developer mailing list<br>
<a href="mailto:QGIS-Developer@lists.osgeo.org" target="_blank">QGIS-Developer@lists.osgeo.org</a><br>
List info: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
Unsubscribe: <a href="https://lists.osgeo.org/mailman/listinfo/qgis-developer" rel="noreferrer" target="_blank">https://lists.osgeo.org/mailman/listinfo/qgis-developer</a></blockquote></div>