/// <summary> the function will printout one or more templates. This implementation /// is slightly different than CLIPS in that it can take one or more /// template names. The definition in CLIPS beginners guide states the /// function does the following: (ppdeftemplate <deftemplate-name>) /// </summary> public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed) { GenericHashMap <object, object> filter = new GenericHashMap <object, object>(); if (params_Renamed != null && params_Renamed.Length > 0) { for (int idx = 0; idx < params_Renamed.Length; idx++) { if (params_Renamed[idx] is ValueParam) { Object df = ((ValueParam)params_Renamed[idx]).Value; filter.Put(df, df); } } } List <Object> templ = (List <Object>)engine.CurrentFocus.Templates; IEnumerator itr = templ.GetEnumerator(); while (itr.MoveNext()) { ITemplate tp = (ITemplate)itr.Current; if (filter.Get(tp.Name) != null) { engine.writeMessage(tp.toPPString() + "\r\n", "t"); } } return(new DefaultReturnVector()); }
public void HashPerformance() { //int[] series = new int[] {1000, 10000, 100000, 1000000, 10000000}; int[] series = new int[] { 1000, 10000 }; HashMapBenchmark util = new HashMapBenchmark(); Random ran = new Random(); for (int idx = 0; idx < series.Length; idx++) { GenericHashMap <object, object> map = util.createHashMap(series[idx]); long start = DateTime.Now.Ticks; for (int idz = 0; idz < 10000000; idz++) { String key = ran.Next(series[idx]).ToString(); Object val = map.Get(key); } long end = DateTime.Now.Ticks; long el = end - start; double perOp = (double)el / 10000000; String fstring = (perOp * 1000000).ToString(); Console.WriteLine("Test for " + series[idx] + " items"); Console.WriteLine("elapsed time " + el + " millisecond"); Console.WriteLine("per lookup " + fstring + " nanosecond"); } }
public void GenericHashPerformance() { //int[] series = new int[] {1000, 10000, 100000, 1000000, 10000000}; int[] series = new int[] { 1000, 10000 }; HashMapBenchmark util = new HashMapBenchmark(); Random ran = new Random(); for (int idx = 0; idx < series.Length; idx++) { GenericHashMap <string, string> map = util.createGenericHashMap(series[idx]); long start = DateTime.Now.Ticks; for (int idz = 0; idz < 10000000; idz++) { String key = ran.Next(series[idx]).ToString(); Object val = map.Get(key); } foreach (IHashMapEntry <string, string> entry in map) { string val = entry.Value; } List <String> keys = new List <String>(map.Count); foreach (String key in map.Keys) { keys.Add(key); string val = map[key]; } foreach (String val in map.Values) { bool yes = map.ContainsValue(val); } foreach (String key in keys) { map.Remove(key); } long end = DateTime.Now.Ticks; long el = end - start; double perOp = (double)el / 10000000; String fstring = (perOp * 1000000).ToString(); Console.WriteLine("Test for " + series[idx] + " items"); Console.WriteLine("elapsed time " + el + " millisecond"); Console.WriteLine("per lookup " + fstring + " nanosecond"); } }
public static IStrategy getStrategy(String key) { return(registry.Get(key)); }
/// <summary> the function will printout one or more templates. This implementation /// is slightly different than CLIPS in that it can take one or more /// template names. The definition in CLIPS beginners guide states the /// function does the following: (ppdeftemplate <deftemplate-name>) /// </summary> public virtual IReturnVector executeFunction(Rete engine, IParameter[] params_Renamed) { GenericHashMap<object, object> filter = new GenericHashMap<object, object>(); if (params_Renamed != null && params_Renamed.Length > 0) { for (int idx = 0; idx < params_Renamed.Length; idx++) { if (params_Renamed[idx] is ValueParam) { Object df = ((ValueParam) params_Renamed[idx]).Value; filter.Put(df, df); } } } List<Object> templ = (List<Object>) engine.CurrentFocus.Templates; IEnumerator itr = templ.GetEnumerator(); while (itr.MoveNext()) { ITemplate tp = (ITemplate) itr.Current; if (filter.Get(tp.Name) != null) { engine.writeMessage(tp.toPPString() + "\r\n", "t"); } } return new DefaultReturnVector(); }
/// <summary> Return the string form of the operator /// </summary> /// <param name="">opr /// </param> /// <returns> /// /// </returns> public static String getPPOperator(int opr) { return((String)OPR_MAP.Get(opr.ToString())); }
public virtual Object getBindingValue(string var) { return(bindings.Get(var)); }