From 4a375b6563d4e0dbd578952d56c7f00ed7d77090 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Wed, 30 Nov 2016 01:08:29 +0000 Subject: [PATCH] fix 0 init time record --- Wox.Core/Plugin/PluginManager.cs | 5 +- Wox.Core/Plugin/PluginsLoader.cs | 88 +++++++++++++++++--------------- 2 files changed, 50 insertions(+), 43 deletions(-) diff --git a/Wox.Core/Plugin/PluginManager.cs b/Wox.Core/Plugin/PluginManager.cs index 1050cf1157..03701f84f7 100644 --- a/Wox.Core/Plugin/PluginManager.cs +++ b/Wox.Core/Plugin/PluginManager.cs @@ -93,7 +93,7 @@ namespace Wox.Core.Plugin API = api; Parallel.ForEach(AllPlugins, pair => { - var milliseconds = Stopwatch.Normal($"Plugin init: {pair.Metadata.Name}", () => + var milliseconds = Stopwatch.Debug($"Plugin init: {pair.Metadata.Name}", () => { pair.Plugin.Init(new PluginInitContext { @@ -101,7 +101,8 @@ namespace Wox.Core.Plugin API = API }); }); - pair.Metadata.InitTime = milliseconds; + pair.Metadata.InitTime += milliseconds; + Log.Info($"Total init for {pair.Metadata.Name}: {pair.Metadata.InitTime}ms"); InternationalizationManager.Instance.UpdatePluginMetadataTranslations(pair); }); diff --git a/Wox.Core/Plugin/PluginsLoader.cs b/Wox.Core/Plugin/PluginsLoader.cs index aeea4f4662..8f37a63525 100644 --- a/Wox.Core/Plugin/PluginsLoader.cs +++ b/Wox.Core/Plugin/PluginsLoader.cs @@ -33,50 +33,56 @@ namespace Wox.Core.Plugin foreach (var metadata in metadatas) { + var milliseconds = Stopwatch.Debug($"C# plugin constructor init: {metadata.Name}", () => + { + #if DEBUG - var assembly = Assembly.Load(AssemblyName.GetAssemblyName(metadata.ExecuteFilePath)); - var types = assembly.GetTypes(); - var type = types.First(o => o.IsClass && !o.IsAbstract && o.GetInterfaces().Contains(typeof(IPlugin))); - var plugin = (IPlugin)Activator.CreateInstance(type); + var assembly = Assembly.Load(AssemblyName.GetAssemblyName(metadata.ExecuteFilePath)); + var types = assembly.GetTypes(); + var type = types.First(o => o.IsClass && !o.IsAbstract && o.GetInterfaces().Contains(typeof(IPlugin))); + var plugin = (IPlugin)Activator.CreateInstance(type); #else - Assembly assembly; - try - { - assembly = Assembly.Load(AssemblyName.GetAssemblyName(metadata.ExecuteFilePath)); - } - catch (Exception e) - { - Log.Exception(new WoxPluginException(metadata.Name, "Couldn't load assembly", e)); - continue; - } - var types = assembly.GetTypes(); - Type type; - try - { - type = types.First(o => o.IsClass && !o.IsAbstract && o.GetInterfaces().Contains(typeof(IPlugin))); - } - catch (InvalidOperationException e) - { - Log.Exception(new WoxPluginException(metadata.Name, "Can't find class implement IPlugin", e)); - continue; - } - IPlugin plugin; - try - { - plugin = (IPlugin)Activator.CreateInstance(type); - } - catch (Exception e) - { - Log.Exception(new WoxPluginException(metadata.Name, "Can't create instance", e)); - continue; - } + Assembly assembly; + try + { + assembly = Assembly.Load(AssemblyName.GetAssemblyName(metadata.ExecuteFilePath)); + } + catch (Exception e) + { + Log.Exception(new WoxPluginException(metadata.Name, "Couldn't load assembly", e)); + return; + } + var types = assembly.GetTypes(); + Type type; + try + { + type = types.First(o => o.IsClass && !o.IsAbstract && o.GetInterfaces().Contains(typeof(IPlugin))); + } + catch (InvalidOperationException e) + { + Log.Exception(new WoxPluginException(metadata.Name, "Can't find class implement IPlugin", e)); + return; + } + IPlugin plugin; + try + { + plugin = (IPlugin)Activator.CreateInstance(type); + } + catch (Exception e) + { + Log.Exception(new WoxPluginException(metadata.Name, "Can't create instance", e)); + return; + } #endif - PluginPair pair = new PluginPair - { - Plugin = plugin, - Metadata = metadata - }; - plugins.Add(pair); + PluginPair pair = new PluginPair + { + Plugin = plugin, + Metadata = metadata + }; + plugins.Add(pair); + }); + metadata.InitTime += milliseconds; + } return plugins; }