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
=========================