From d7edad1e641582a6cff342e729744c2328c4b076 Mon Sep 17 00:00:00 2001 From: molsonkiko <46202915+molsonkiko@users.noreply.github.com> Date: Sat, 24 Feb 2024 14:59:17 -0800 Subject: [PATCH] Implement NPPN_GLOBALMODIFIED callback not sure if it was necessary, but now it's done --- JsonToolsNppPlugin/Forms/TreeViewer.cs | 2 +- JsonToolsNppPlugin/Main.cs | 11 ++- .../PluginInfrastructure/Msgs_h.cs | 11 +++ JsonToolsNppPlugin/Properties/AssemblyInfo.cs | 4 +- most recent errors.txt | 82 +++++++++---------- 5 files changed, 65 insertions(+), 45 deletions(-) diff --git a/JsonToolsNppPlugin/Forms/TreeViewer.cs b/JsonToolsNppPlugin/Forms/TreeViewer.cs index fbe99b3..0c3f42b 100644 --- a/JsonToolsNppPlugin/Forms/TreeViewer.cs +++ b/JsonToolsNppPlugin/Forms/TreeViewer.cs @@ -53,7 +53,7 @@ public partial class TreeViewer : Form public bool documentTypeIndexChangeWasAutomatic; /// - /// If the user performs an undo or redo action, + /// If the user modifies the buffer belonging to this treeview, /// this will be set to true so that the next time the user performs a RemesPath query, /// the treeview is reset beforehand. /// diff --git a/JsonToolsNppPlugin/Main.cs b/JsonToolsNppPlugin/Main.cs index 373a167..a856dc8 100644 --- a/JsonToolsNppPlugin/Main.cs +++ b/JsonToolsNppPlugin/Main.cs @@ -350,11 +350,20 @@ public static void OnNotification(ScNotification notification) // if the user did nothing for a while (default 1 second) after editing, // re-parse the file and also perform validation if that's enabled. case (uint)SciMsg.SCN_MODIFIED: - // only turn on the flag if the user performed the modification lastEditedTime = System.DateTime.UtcNow; if (openTreeViewer != null) openTreeViewer.shouldRefresh = true; break; + // a find/replace action was performed. + // Tag the treeview of the modified file as needing to refresh, and indicate that the document was edited. + case (uint)NppMsg.NPPN_GLOBALMODIFIED: + IntPtr bufferModifiedId = notification.Header.hwndFrom; + string bufferModified = Npp.notepad.GetFilePath(bufferModifiedId); + if (bufferModified == activeFname) + lastEditedTime = System.DateTime.UtcNow; + if (TryGetInfoForFile(bufferModified, out info) && !(info.tv is null) && !info.tv.IsDisposed) + info.tv.shouldRefresh = true; + break; //if (code > int.MaxValue) // windows messages //{ // int wm = -(int)code; diff --git a/JsonToolsNppPlugin/PluginInfrastructure/Msgs_h.cs b/JsonToolsNppPlugin/PluginInfrastructure/Msgs_h.cs index 1fa270b..c45b9db 100644 --- a/JsonToolsNppPlugin/PluginInfrastructure/Msgs_h.cs +++ b/JsonToolsNppPlugin/PluginInfrastructure/Msgs_h.cs @@ -834,6 +834,17 @@ public enum NppMsg : uint /// NPPN_FILEDELETED = NPPN_FIRST + 26, + /// + /// To notify plugins that the current document is just modified by Replace All action.

+ /// For solving the performance issue (from v8.6.4), Notepad++ doesn't trigger SCN_MODIFIED during Replace All action anymore.

+ /// As a result, the plugins which monitor SCN_MODIFIED should also monitor NPPN_GLOBALMODIFIED.

+ /// This notification is implemented in Notepad++ v8.6.5.

+ /// scnNotification->nmhdr.code = NPPN_GLOBALMODIFIED;

+ /// scnNotification->nmhdr.hwndFrom = BufferID;

+ /// scnNotification->nmhdr.idFrom = 0; // preserved for the future use, must be zero + ///
+ NPPN_GLOBALMODIFIED = NPPN_FIRST + 30, + /* --Autogenerated -- end of section automatically generated from notepad-plus-plus\PowerEditor\src\MISC\PluginsManager\Notepad_plus_msgs.h * */ } diff --git a/JsonToolsNppPlugin/Properties/AssemblyInfo.cs b/JsonToolsNppPlugin/Properties/AssemblyInfo.cs index b55e551..ef8131d 100644 --- a/JsonToolsNppPlugin/Properties/AssemblyInfo.cs +++ b/JsonToolsNppPlugin/Properties/AssemblyInfo.cs @@ -28,5 +28,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("7.0.0.3")] -[assembly: AssemblyFileVersion("7.0.0.3")] +[assembly: AssemblyVersion("7.0.0.4")] +[assembly: AssemblyFileVersion("7.0.0.4")] diff --git a/most recent errors.txt b/most recent errors.txt index 8a59cde..35a20bf 100644 --- a/most recent errors.txt +++ b/most recent errors.txt @@ -1,4 +1,4 @@ -Test results for JsonTools v7.0.0.3 on Notepad++ 8.6.4 64bit +Test results for JsonTools v7.0.0.4 on Notepad++ 8.6.4 64bit NOTE: Ctrl-F (regular expressions *on*) for "Failed [1-9]\d*" to find all failed tests Tests failed: YAML dumper ========================= @@ -201,33 +201,33 @@ Testing JsonParser performance Preview of json: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c" ... -To convert JSON string of size 89556 into JNode took 2.697 +/- 1.903 ms over 32 trials -Load times (ms): 3, 11, 1, 2, 2, 1, 3, 1, 2, 4, 1, 1, 1, 2, 1, 1, 4, 1, 1, 1, 2, 1, 1, 4, 1, 1, 1, 3, 1, 1, 4, 1 +To convert JSON string of size 89556 into JNode took 3.844 +/- 1.821 ms over 32 trials +Load times (ms): 2, 6, 5, 6, 3, 4, 8, 2, 2, 3, 4, 2, 2, 6, 2, 2, 2, 4, 2, 2, 7, 2, 2, 2, 4, 2, 1, 7, 3, 2, 2, 4 ========================= Performance tests for RemesPath (float arithmetic) ========================= -Compiling query "@[@[:].a * @[:].t < @[:].e]" took 0.074 ms the first time, including approximately 0.095 ms to tokenize the query. Subsequent executions are effectively free due to caching. -To run pre-compiled query "@[@[:].a * @[:].t < @[:].e]" on JNode from JSON of size 89556 into took 0.025 +/- 0.007 ms over 40 trials -Query times (ms): 0.063, 0.04, 0.023, 0.022, 0.023, 0.022, 0.022, 0.03, 0.023, 0.022, 0.022, 0.023, 0.022, 0.028, 0.022, 0.023, 0.023, 0.022, 0.022, 0.026, 0.022, 0.022, 0.022, 0.023, 0.022, 0.025, 0.022, 0.023, 0.023, 0.023, 0.022, 0.029, 0.023, 0.022, 0.023, 0.022, 0.023, 0.025, 0.023, 0.022 +Compiling query "@[@[:].a * @[:].t < @[:].e]" took 0.096 ms the first time, including approximately 0.112 ms to tokenize the query. Subsequent executions are effectively free due to caching. +To run pre-compiled query "@[@[:].a * @[:].t < @[:].e]" on JNode from JSON of size 89556 into took 0.034 +/- 0.017 ms over 40 trials +Query times (ms): 0.125, 0.057, 0.025, 0.023, 0.023, 0.025, 0.03, 0.037, 0.032, 0.024, 0.023, 0.024, 0.025, 0.038, 0.024, 0.025, 0.024, 0.026, 0.025, 0.038, 0.05, 0.045, 0.04, 0.039, 0.044, 0.052, 0.038, 0.038, 0.024, 0.024, 0.023, 0.041, 0.037, 0.04, 0.04, 0.024, 0.023, 0.033, 0.024, 0.023 Preview of result: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c" ... ========================= Performance tests for RemesPath (string operations) ========================= -Compiling query "@[@[:].z =~ `(?i)[a-z]{5}`]" took 0.101 ms the first time, including approximately 0.095 ms to tokenize the query. Subsequent executions are effectively free due to caching. -To run pre-compiled query "@[@[:].z =~ `(?i)[a-z]{5}`]" on JNode from JSON of size 89556 into took 0.076 +/- 0.024 ms over 40 trials -Query times (ms): 0.188, 0.155, 0.092, 0.067, 0.065, 0.066, 0.063, 0.07, 0.06, 0.066, 0.073, 0.069, 0.086, 0.076, 0.07, 0.068, 0.069, 0.063, 0.066, 0.069, 0.072, 0.065, 0.064, 0.065, 0.066, 0.083, 0.064, 0.068, 0.065, 0.065, 0.065, 0.068, 0.065, 0.069, 0.072, 0.074, 0.072, 0.069, 0.105, 0.087 +Compiling query "@[@[:].z =~ `(?i)[a-z]{5}`]" took 0.067 ms the first time, including approximately 0.076 ms to tokenize the query. Subsequent executions are effectively free due to caching. +To run pre-compiled query "@[@[:].z =~ `(?i)[a-z]{5}`]" on JNode from JSON of size 89556 into took 0.088 +/- 0.028 ms over 40 trials +Query times (ms): 0.192, 0.164, 0.1, 0.095, 0.096, 0.095, 0.105, 0.102, 0.098, 0.093, 0.092, 0.103, 0.097, 0.1, 0.097, 0.094, 0.099, 0.067, 0.056, 0.057, 0.056, 0.056, 0.056, 0.095, 0.101, 0.104, 0.096, 0.079, 0.058, 0.055, 0.055, 0.056, 0.057, 0.06, 0.06, 0.082, 0.089, 0.105, 0.097, 0.093 Preview of result: [{"A": "\n]o1VQ5t6g", "a": 4710024278, "b": 3268860721, "B": "g4Y7+ew^.v", "C": "NK nmax_notq, `when q=true, nmax = ` + str(nmax_q), `when q=false, nmax= ` + str(nmax_notq))" took 0.177 ms the first time, including approximately 0.165 ms to tokenize the query. Subsequent executions are effectively free due to caching. +ifelse(nmax_q > nmax_notq, `when q=true, nmax = ` + str(nmax_q), `when q=false, nmax= ` + str(nmax_notq))" took 0.272 ms the first time, including approximately 0.425 ms to tokenize the query. Subsequent executions are effectively free due to caching. To run pre-compiled query "var qmask = @[:].q; var nmax_q = max(@[qmask].n); var nmax_notq = max(@[not qmask].n); -ifelse(nmax_q > nmax_notq, `when q=true, nmax = ` + str(nmax_q), `when q=false, nmax= ` + str(nmax_notq))" on JNode from JSON of size 89556 into took 0.024 +/- 0.018 ms over 40 trials -Query times (ms): 0.114, 0.021, 0.018, 0.019, 0.017, 0.058, 0.077, 0.037, 0.027, 0.028, 0.025, 0.019, 0.017, 0.017, 0.017, 0.017, 0.016, 0.017, 0.018, 0.019, 0.017, 0.017, 0.018, 0.017, 0.017, 0.017, 0.018, 0.018, 0.018, 0.018, 0.018, 0.017, 0.017, 0.02, 0.021, 0.016, 0.015, 0.017, 0.016, 0.016 +ifelse(nmax_q > nmax_notq, `when q=true, nmax = ` + str(nmax_q), `when q=false, nmax= ` + str(nmax_notq))" on JNode from JSON of size 89556 into took 0.048 +/- 0.065 ms over 40 trials +Query times (ms): 0.129, 0.028, 0.027, 0.098, 0.228, 0.034, 0.03, 0.034, 0.028, 0.028, 0.033, 0.031, 0.385, 0.059, 0.027, 0.026, 0.025, 0.026, 0.026, 0.027, 0.07, 0.033, 0.029, 0.027, 0.028, 0.028, 0.028, 0.025, 0.03, 0.026, 0.029, 0.028, 0.029, 0.028, 0.03, 0.029, 0.03, 0.028, 0.026, 0.028 Preview of result: "when q=false, nmax= 9830935647.0" ... ========================= @@ -266,11 +266,11 @@ Performance tests for RemesPath (references to compile-time constant variables) Compiling query "var X = X; var onetwo = j`[1, 2]`; -@[:]->at(@, X)->at(@, onetwo)" took 0.085 ms the first time, including approximately 0.099 ms to tokenize the query. Subsequent executions are effectively free due to caching. +@[:]->at(@, X)->at(@, onetwo)" took 0.156 ms the first time, including approximately 0.209 ms to tokenize the query. Subsequent executions are effectively free due to caching. To run pre-compiled query "var X = X; var onetwo = j`[1, 2]`; -@[:]->at(@, X)->at(@, onetwo)" on JNode from JSON of size 89556 into took 0.021 +/- 0.043 ms over 40 trials -Query times (ms): 0.05, 0.013, 0.012, 0.012, 0.013, 0.013, 0.013, 0.012, 0.012, 0.013, 0.012, 0.012, 0.012, 0.012, 0.012, 0.013, 0.011, 0.012, 0.012, 0.014, 0.013, 0.012, 0.013, 0.013, 0.012, 0.014, 0.012, 0.014, 0.013, 0.012, 0.014, 0.012, 0.012, 0.287, 0.025, 0.012, 0.012, 0.012, 0.013, 0.012 +@[:]->at(@, X)->at(@, onetwo)" on JNode from JSON of size 89556 into took 0.03 +/- 0.018 ms over 40 trials +Query times (ms): 0.093, 0.027, 0.026, 0.028, 0.113, 0.058, 0.023, 0.025, 0.025, 0.026, 0.023, 0.025, 0.024, 0.026, 0.047, 0.024, 0.025, 0.028, 0.025, 0.024, 0.026, 0.025, 0.024, 0.026, 0.027, 0.025, 0.026, 0.024, 0.024, 0.025, 0.025, 0.024, 0.023, 0.022, 0.024, 0.024, 0.024, 0.027, 0.023, 0.023 Preview of result: [[1695727848, 0.287562638736685], [2126430375, 0.00767794129708177], [5310550656, 0.380769772645687], [2519183283, 0.153176220930558], [6610062385, 0.662996225870666], [987168256, 0.924410189999928], [6615003609, 0.917112691225947], [4465232046, 0.684311931851536], [8654414565, 0.631485392105992], [ ... ========================= @@ -279,29 +279,29 @@ Performance tests for RemesPath (references to variables that are not compile-ti Compiling query "var X = @->`X`; var onetwo = @{1, 2}; -@[:]->at(@, X)->at(@, onetwo)" took 0.126 ms the first time, including approximately 0.12 ms to tokenize the query. Subsequent executions are effectively free due to caching. +@[:]->at(@, X)->at(@, onetwo)" took 0.15 ms the first time, including approximately 0.16 ms to tokenize the query. Subsequent executions are effectively free due to caching. To run pre-compiled query "var X = @->`X`; var onetwo = @{1, 2}; -@[:]->at(@, X)->at(@, onetwo)" on JNode from JSON of size 89556 into took 0.025 +/- 0.014 ms over 40 trials -Query times (ms): 0.086, 0.018, 0.016, 0.016, 0.026, 0.019, 0.018, 0.039, 0.018, 0.018, 0.046, 0.017, 0.016, 0.066, 0.029, 0.038, 0.028, 0.028, 0.027, 0.027, 0.026, 0.03, 0.029, 0.034, 0.033, 0.032, 0.017, 0.015, 0.016, 0.016, 0.016, 0.016, 0.017, 0.016, 0.016, 0.016, 0.015, 0.016, 0.016, 0.017 +@[:]->at(@, X)->at(@, onetwo)" on JNode from JSON of size 89556 into took 0.034 +/- 0.012 ms over 40 trials +Query times (ms): 0.107, 0.035, 0.03, 0.025, 0.026, 0.044, 0.027, 0.038, 0.03, 0.029, 0.033, 0.032, 0.03, 0.037, 0.032, 0.03, 0.032, 0.033, 0.03, 0.031, 0.034, 0.03, 0.031, 0.032, 0.03, 0.034, 0.032, 0.028, 0.029, 0.031, 0.03, 0.033, 0.035, 0.032, 0.034, 0.032, 0.03, 0.032, 0.03, 0.028 Preview of result: [[1695727848, 0.287562638736685], [2126430375, 0.00767794129708177], [5310550656, 0.380769772645687], [2519183283, 0.153176220930558], [6610062385, 0.662996225870666], [987168256, 0.924410189999928], [6615003609, 0.917112691225947], [4465232046, 0.684311931851536], [8654414565, 0.631485392105992], [ ... ========================= Performance tests for RemesPath (simple string mutations) ========================= -Compiling query "@[:].z = s_sub(@, g, B)" took 0.076 ms the first time, including approximately 0.102 ms to tokenize the query. Subsequent executions are effectively free due to caching. -To run pre-compiled query "@[:].z = s_sub(@, g, B)" on JNode from JSON of size 89556 into took 0.025 +/- 0.009 ms over 40 trials -Query times (ms): 0.043, 0.026, 0.038, 0.033, 0.025, 0.023, 0.033, 0.031, 0.029, 0.028, 0.027, 0.03, 0.028, 0.054, 0.023, 0.038, 0.033, 0.022, 0.022, 0.026, 0.024, 0.024, 0.022, 0.03, 0.025, 0.016, 0.016, 0.013, 0.015, 0.028, 0.014, 0.014, 0.015, 0.014, 0.02, 0.024, 0.015, 0.015, 0.014, 0.016 +Compiling query "@[:].z = s_sub(@, g, B)" took 0.086 ms the first time, including approximately 0.098 ms to tokenize the query. Subsequent executions are effectively free due to caching. +To run pre-compiled query "@[:].z = s_sub(@, g, B)" on JNode from JSON of size 89556 into took 0.035 +/- 0.007 ms over 40 trials +Query times (ms): 0.045, 0.035, 0.031, 0.027, 0.047, 0.037, 0.042, 0.039, 0.037, 0.037, 0.033, 0.032, 0.036, 0.044, 0.039, 0.035, 0.036, 0.061, 0.042, 0.041, 0.034, 0.028, 0.029, 0.028, 0.037, 0.034, 0.032, 0.035, 0.041, 0.029, 0.027, 0.028, 0.043, 0.03, 0.034, 0.027, 0.028, 0.033, 0.025, 0.026 Preview of result: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c" ... ========================= Performance tests for RemesPath (simple number mutations) ========================= -Compiling query "@[:].x = ifelse(@ < 0.5, @ + 3, @ - 3)" took 0.124 ms the first time, including approximately 0.16 ms to tokenize the query. Subsequent executions are effectively free due to caching. -To run pre-compiled query "@[:].x = ifelse(@ < 0.5, @ + 3, @ - 3)" on JNode from JSON of size 89556 into took 0.036 +/- 0.014 ms over 40 trials -Query times (ms): 0.05, 0.052, 0.042, 0.036, 0.034, 0.041, 0.038, 0.04, 0.033, 0.034, 0.068, 0.059, 0.047, 0.067, 0.058, 0.043, 0.025, 0.02, 0.04, 0.048, 0.026, 0.022, 0.02, 0.022, 0.024, 0.022, 0.022, 0.055, 0.05, 0.038, 0.034, 0.043, 0.035, 0.036, 0.024, 0.019, 0.019, 0.023, 0.019, 0.027 +Compiling query "@[:].x = ifelse(@ < 0.5, @ + 3, @ - 3)" took 0.098 ms the first time, including approximately 0.101 ms to tokenize the query. Subsequent executions are effectively free due to caching. +To run pre-compiled query "@[:].x = ifelse(@ < 0.5, @ + 3, @ - 3)" on JNode from JSON of size 89556 into took 0.047 +/- 0.014 ms over 40 trials +Query times (ms): 0.059, 0.055, 0.054, 0.056, 0.049, 0.047, 0.048, 0.048, 0.042, 0.066, 0.044, 0.039, 0.039, 0.052, 0.061, 0.05, 0.05, 0.056, 0.092, 0.083, 0.044, 0.04, 0.038, 0.022, 0.035, 0.042, 0.041, 0.038, 0.041, 0.046, 0.056, 0.054, 0.047, 0.043, 0.026, 0.024, 0.03, 0.028, 0.044, 0.04 Preview of result: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c" ... ========================= @@ -311,12 +311,12 @@ Performance tests for RemesPath (mutations with a for loop) Compiling query "var xhalf = @[:].x < 0.5; for lx = zip(@[:].l, xhalf); lx[0] = ifelse(lx[1], foo, bar); -end for;" took 0.27 ms the first time, including approximately 0.26 ms to tokenize the query. Subsequent executions are effectively free due to caching. +end for;" took 0.259 ms the first time, including approximately 0.198 ms to tokenize the query. Subsequent executions are effectively free due to caching. To run pre-compiled query "var xhalf = @[:].x < 0.5; for lx = zip(@[:].l, xhalf); lx[0] = ifelse(lx[1], foo, bar); -end for;" on JNode from JSON of size 89556 into took 0.063 +/- 0.02 ms over 40 trials -Query times (ms): 0.098, 0.096, 0.073, 0.066, 0.057, 0.04, 0.038, 0.051, 0.053, 0.072, 0.054, 0.125, 0.121, 0.08, 0.072, 0.057, 0.08, 0.064, 0.041, 0.038, 0.048, 0.06, 0.043, 0.04, 0.053, 0.064, 0.061, 0.073, 0.058, 0.058, 0.063, 0.056, 0.064, 0.057, 0.055, 0.044, 0.059, 0.042, 0.065, 0.069 +end for;" on JNode from JSON of size 89556 into took 0.08 +/- 0.022 ms over 40 trials +Query times (ms): 0.099, 0.116, 0.119, 0.094, 0.118, 0.053, 0.081, 0.094, 0.086, 0.073, 0.068, 0.058, 0.058, 0.062, 0.09, 0.099, 0.078, 0.082, 0.047, 0.039, 0.042, 0.041, 0.043, 0.112, 0.117, 0.07, 0.093, 0.113, 0.08, 0.073, 0.089, 0.087, 0.077, 0.071, 0.078, 0.077, 0.076, 0.08, 0.084, 0.08 Preview of result: [["bar", false], ["bar", false], ["foo", true], ["foo", true], ["foo", true], ["foo", true], ["foo", true], ["bar", false], ["bar", false], ["bar", false], ["foo", true], ["foo", true], ["bar", false], ["bar", false], ["foo", true], ["bar", false], ["bar", false], ["bar", false], ["foo", true], ["ba ... ========================= @@ -325,18 +325,18 @@ Testing performance of JSON compression and pretty-printing Preview of json: [{"A": "Ky'c^g#~)0", "a": 1850111954, "b": 9318359041, "B": "Oyi:/ xxe2", "C": "sKCSa_^7Gg", "c": 7974777124, "d": 2670309238, "D": "0d_K)HmX!.", "E": ".uM*Z{0EJ_", "e": 6958410336, "f": 8050244728, "F": "1%SG_A!xB\t", "g": 3799657125, "G": "il1^k\\\nat*", "H": {"a": 6079042826, "b": 7292804611, "c" ... -To compress JNode from JSON string of 89556 took 4.812 +/- 0.92 ms over 64 trials (minimal whitespace, sortKeys=TRUE) -To compress JNode from JSON string of 89556 took 2.473 +/- 0.323 ms over 64 trials (minimal whitespace, sortKeys=FALSE) -To Google-style pretty-print JNode from JSON string of 89556 took 4.25 +/- 0.508 ms over 64 trials (sortKeys=true, indent=4) -To Whitesmith-style pretty-print JNode from JSON string of 89556 took 4.379 +/- 0.607 ms over 64 trials (sortKeys=true, indent=4) -To PPrint-style pretty-print JNode from JSON string of 89556 took 6.996 +/- 1.206 ms over 64 trials (sortKeys=true, indent=4) +To compress JNode from JSON string of 89556 took 4.893 +/- 1.137 ms over 64 trials (minimal whitespace, sortKeys=TRUE) +To compress JNode from JSON string of 89556 took 2.071 +/- 0.211 ms over 64 trials (minimal whitespace, sortKeys=FALSE) +To Google-style pretty-print JNode from JSON string of 89556 took 4.335 +/- 0.64 ms over 64 trials (sortKeys=true, indent=4) +To Whitesmith-style pretty-print JNode from JSON string of 89556 took 4.292 +/- 0.386 ms over 64 trials (sortKeys=true, indent=4) +To PPrint-style pretty-print JNode from JSON string of 89556 took 6.214 +/- 0.902 ms over 64 trials (sortKeys=true, indent=4) ========================= Testing performance of JsonSchemaValidator and random JSON creation ========================= -To create a random set of tweet JSON of size 142622 (15 tweets) based on the matching schema took 6.702 +/- 3.198 ms over 64 trials -To compile the tweet schema to a validation function took 0.275 +/- 0.432 ms over 64 trials -To validate tweet JSON of size 142622 (15 tweets) based on the compiled schema took 1.002 +/- 0.178 ms over 64 trials +To create a random set of tweet JSON of size 175903 (15 tweets) based on the matching schema took 6.534 +/- 3.045 ms over 64 trials +To compile the tweet schema to a validation function took 0.628 +/- 1.357 ms over 64 trials +To validate tweet JSON of size 175903 (15 tweets) based on the compiled schema took 1.046 +/- 0.196 ms over 64 trials ========================= Testing JSON grepper's API request tool =========================