Add init time and query time to setting view

This commit is contained in:
qianlifeng
2015-02-05 00:03:35 +08:00
parent 1d3f1fd7d0
commit fa53bce27a
8 changed files with 49 additions and 20 deletions

View File

@@ -21,9 +21,6 @@ namespace Wox.Plugin.CMD
public List<Result> Query(Query query) public List<Result> Query(Query query)
{ {
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
List<Result> results = new List<Result>(); List<Result> results = new List<Result>();
List<Result> pushedResults = new List<Result>(); List<Result> pushedResults = new List<Result>();
if (query.Search == ">") if (query.Search == ">")
@@ -80,8 +77,6 @@ namespace Wox.Plugin.CMD
catch (Exception) { } catch (Exception) { }
} }
stopwatch.Stop();
DebugHelper.WriteLine("CMD:" + stopwatch.ElapsedMilliseconds + "ms");
return results; return results;
} }

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
@@ -21,7 +22,7 @@ namespace Wox.Core.Plugin
{ {
public const string ActionKeywordWildcardSign = "*"; public const string ActionKeywordWildcardSign = "*";
private static List<PluginMetadata> pluginMetadatas; private static List<PluginMetadata> pluginMetadatas;
private static List<KeyValuePair<PluginMetadata,IInstantSearch>> instantSearches; private static List<KeyValuePair<PluginMetadata, IInstantSearch>> instantSearches;
public static String DebuggerMode { get; private set; } public static String DebuggerMode { get; private set; }
@@ -86,15 +87,17 @@ namespace Wox.Core.Plugin
PluginPair pair = pluginPair; PluginPair pair = pluginPair;
ThreadPool.QueueUserWorkItem(o => ThreadPool.QueueUserWorkItem(o =>
{ {
using (new Timeit(string.Format("Init {0}", pair.Metadata.Name))) Stopwatch sw = new Stopwatch();
sw.Start();
pair.Plugin.Init(new PluginInitContext()
{ {
pair.Plugin.Init(new PluginInitContext() CurrentPluginMetadata = pair.Metadata,
{ Proxy = HttpProxy.Instance,
CurrentPluginMetadata = pair.Metadata, API = API
Proxy = HttpProxy.Instance, });
API = API sw.Stop();
}); DebugHelper.WriteLine(string.Format("Plugin init:{0} - {1}", pair.Metadata.Name, sw.ElapsedMilliseconds));
} pair.InitTime = sw.ElapsedMilliseconds;
}); });
} }
@@ -129,7 +132,7 @@ namespace Wox.Core.Plugin
{ {
if (string.IsNullOrEmpty(query.RawQuery)) return false; if (string.IsNullOrEmpty(query.RawQuery)) return false;
var strings = query.RawQuery.Split(' '); var strings = query.RawQuery.Split(' ');
if(strings.Length == 1) return false; if (strings.Length == 1) return false;
var actionKeyword = strings[0].Trim(); var actionKeyword = strings[0].Trim();
if (string.IsNullOrEmpty(actionKeyword)) return false; if (string.IsNullOrEmpty(actionKeyword)) return false;
@@ -163,11 +166,24 @@ namespace Wox.Core.Plugin
{ {
try try
{ {
Stopwatch sw = new Stopwatch();
sw.Start();
List<Result> results = pair.Plugin.Query(query) ?? new List<Result>(); List<Result> results = pair.Plugin.Query(query) ?? new List<Result>();
results.ForEach(o => results.ForEach(o =>
{ {
o.PluginID = pair.Metadata.ID; o.PluginID = pair.Metadata.ID;
}); });
sw.Stop();
DebugHelper.WriteLine(string.Format("Plugin query: {0} - {1}", pair.Metadata.Name, sw.ElapsedMilliseconds));
pair.QueryCount += 1;
if (pair.QueryCount == 1)
{
pair.AvgQueryTime = sw.ElapsedMilliseconds;
}
else
{
pair.AvgQueryTime = (pair.AvgQueryTime + sw.ElapsedMilliseconds) / 2;
}
API.PushResults(query, pair.Metadata, results); API.PushResults(query, pair.Metadata, results);
} }
catch (System.Exception e) catch (System.Exception e)
@@ -176,7 +192,7 @@ namespace Wox.Core.Plugin
} }
} }
private static List<KeyValuePair<PluginMetadata,IInstantSearch>> LoadInstantSearches() private static List<KeyValuePair<PluginMetadata, IInstantSearch>> LoadInstantSearches()
{ {
if (instantSearches != null) return instantSearches; if (instantSearches != null) return instantSearches;
@@ -196,7 +212,7 @@ namespace Wox.Core.Plugin
foreach (Type type in types) foreach (Type type in types)
{ {
instantSearches.Add(new KeyValuePair<PluginMetadata, IInstantSearch>(metadata,Activator.CreateInstance(type) as IInstantSearch)); instantSearches.Add(new KeyValuePair<PluginMetadata, IInstantSearch>(metadata, Activator.CreateInstance(type) as IInstantSearch));
} }
} }
catch (System.Exception e) catch (System.Exception e)

View File

@@ -10,6 +10,12 @@ namespace Wox.Plugin
public IPlugin Plugin { get; set; } public IPlugin Plugin { get; set; }
public PluginMetadata Metadata { get; set; } public PluginMetadata Metadata { get; set; }
internal long InitTime { get; set; }
internal long AvgQueryTime { get; set; }
internal int QueryCount { get; set; }
public override string ToString() public override string ToString()
{ {
return Metadata.Name; return Metadata.Name;

View File

@@ -22,6 +22,8 @@
<system:String x:Key="actionKeyword">Action keyword</system:String> <system:String x:Key="actionKeyword">Action keyword</system:String>
<system:String x:Key="pluginDirectory">Plugin Directory</system:String> <system:String x:Key="pluginDirectory">Plugin Directory</system:String>
<system:String x:Key="author">Author</system:String> <system:String x:Key="author">Author</system:String>
<system:String x:Key="plugin_init_time">Init time: {0}ms</system:String>
<system:String x:Key="plugin_query_time">Query time: {0}ms</system:String>
<!--Setting Theme--> <!--Setting Theme-->
<system:String x:Key="theme">Theme</system:String> <system:String x:Key="theme">Theme</system:String>

View File

@@ -22,6 +22,8 @@
<system:String x:Key="actionKeyword">触发关键字</system:String> <system:String x:Key="actionKeyword">触发关键字</system:String>
<system:String x:Key="pluginDirectory">插件目录</system:String> <system:String x:Key="pluginDirectory">插件目录</system:String>
<system:String x:Key="author">作者</system:String> <system:String x:Key="author">作者</system:String>
<system:String x:Key="plugin_init_time">加载耗时:{0}ms</system:String>
<system:String x:Key="plugin_query_time">查询耗时:{0}ms</system:String>
<!--设置,主题--> <!--设置,主题-->
<system:String x:Key="theme">主题</system:String> <system:String x:Key="theme">主题</system:String>

View File

@@ -22,6 +22,8 @@
<system:String x:Key="actionKeyword">觸發關鍵字</system:String> <system:String x:Key="actionKeyword">觸發關鍵字</system:String>
<system:String x:Key="pluginDirectory">插件目錄</system:String> <system:String x:Key="pluginDirectory">插件目錄</system:String>
<system:String x:Key="author">作者</system:String> <system:String x:Key="author">作者</system:String>
<system:String x:Key="plugin_init_time">加載耗時:{0}ms</system:String>
<system:String x:Key="plugin_query_time">查詢耗時:{0}ms</system:String>
<!--設置,主題--> <!--設置,主題-->
<system:String x:Key="theme">主題</system:String> <system:String x:Key="theme">主題</system:String>

View File

@@ -95,10 +95,12 @@
<CheckBox x:Name="cbDisablePlugin" Click="CbDisablePlugin_OnClick"> <CheckBox x:Name="cbDisablePlugin" Click="CbDisablePlugin_OnClick">
<TextBlock Text="{DynamicResource disable}"></TextBlock> <TextBlock Text="{DynamicResource disable}"></TextBlock>
</CheckBox> </CheckBox>
<TextBlock x:Name="pluginActionKeywordTitle" Margin="50 -2 0 0"> <TextBlock x:Name="pluginActionKeywordTitle" Margin="20 -2 0 0">
<TextBlock Text="{DynamicResource actionKeyword}"></TextBlock> <TextBlock Text="{DynamicResource actionKeyword}"></TextBlock>
</TextBlock> </TextBlock>
<TextBlock Margin="5 -2 0 0" ToolTip="Change Action Keyword" Cursor="Hand" MouseUp="PluginActionKeyword_OnMouseUp" Foreground="Blue" Text="key" x:Name="pluginActionKeyword"></TextBlock> <TextBlock Margin="5 -2 0 0" ToolTip="Change Action Keyword" Cursor="Hand" MouseUp="PluginActionKeyword_OnMouseUp" Foreground="Blue" Text="key" x:Name="pluginActionKeyword"></TextBlock>
<TextBlock Margin="20 -2 0 0" Text="Init time: 0ms" x:Name="pluginInitTime"></TextBlock>
<TextBlock Margin="20 -2 0 0" Text="Query time: 0ms" x:Name="pluginQueryTime"></TextBlock>
<TextBlock HorizontalAlignment="Right" Cursor="Hand" MouseUp="tbOpenPluginDirecoty_MouseUp" Foreground="Blue" Text="{DynamicResource pluginDirectory}" x:Name="tbOpenPluginDirecoty"></TextBlock> <TextBlock HorizontalAlignment="Right" Cursor="Hand" MouseUp="tbOpenPluginDirecoty_MouseUp" Foreground="Blue" Text="{DynamicResource pluginDirectory}" x:Name="tbOpenPluginDirecoty"></TextBlock>
</DockPanel> </DockPanel>
</Grid> </Grid>

View File

@@ -477,6 +477,10 @@ namespace Wox
provider = pair.Plugin as ISettingProvider; provider = pair.Plugin as ISettingProvider;
pluginAuthor.Visibility = Visibility.Visible; pluginAuthor.Visibility = Visibility.Visible;
pluginActionKeyword.Visibility = Visibility.Visible; pluginActionKeyword.Visibility = Visibility.Visible;
pluginInitTime.Text =
string.Format(InternationalizationManager.Instance.GetTranslation("plugin_init_time"), pair.InitTime);
pluginQueryTime.Text =
string.Format(InternationalizationManager.Instance.GetTranslation("plugin_query_time"), pair.AvgQueryTime);
pluginActionKeywordTitle.Visibility = Visibility.Visible; pluginActionKeywordTitle.Visibility = Visibility.Visible;
tbOpenPluginDirecoty.Visibility = Visibility.Visible; tbOpenPluginDirecoty.Visibility = Visibility.Visible;
pluginTitle.Text = pair.Metadata.Name; pluginTitle.Text = pair.Metadata.Name;