Example: /Util/JSON/JSON Benchmarks

Online Documentation   -   Statistics   -   FAQ   -   Plugin Parts (All, Dependencies)   -   Class hierarchy

New in Version 22.2 22.3 22.4 22.5 23.0 23.1 23.2 23.3 23.4 23.5 24.0 24.1

The list of the   topics,   classes,   interfaces,   controls,   modules,   global methods by category,   global methods by name,   screenshots,   licenses   and   examples.

Platforms to show: All Mac Windows Linux Cross-Platform

/Util/JSON/JSON Benchmarks


Required plugins for this example: MBS Util Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Util/JSON/JSON Benchmarks

This example is the version from Wed, 23th Feb 2021.

Project "JSON Benchmarks.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
EventHandler Sub Open() // register plugin here End EventHandler
End Class
Class MainWindow Inherits Window
Const kCount = 10000
Control List Inherits Listbox
ControlInstance List Inherits Listbox
EventHandler Function CompareRows(row1 as Integer, row2 as Integer, column as Integer, ByRef result as Integer) As Boolean If column = 1 Then Dim v1 As Double = Me.CellTag(row1, column) Dim v2 As Double = Me.CellTag(row1, column) If v1 > v2 Then result = 1 Elseif v1 = v2 Then result = 0 Else result = -1 End If Return True End If End EventHandler
EventHandler Sub Open() List.ColumnAlignment(1) = List.AlignRight End EventHandler
End Control
EventHandler Sub Open() #Pragma DisableBackgroundTasks true Dim m1 As Double = Microseconds Dim j1 As String = BuildJSON_MBS1 Dim m2 As Double = Microseconds Dim j2 As String = BuildJSON_MBS2 Dim m3 As Double = Microseconds Dim j3 As String = BuildJSON_Xojo1 Dim m4 As Double = Microseconds Dim j4 As String = BuildJSON_Xojo2 Dim m5 As Double = Microseconds #If XojoVersion > 2020.0 Dim j5 As String = BuildJSON_Xojo3 Dim m6 As Double = Microseconds Dim d5 As Double = m6-m5 #EndIf Dim d1 As Double = m2-m1 Dim d2 As Double = m3-m2 Dim d3 As Double = m4-m3 Dim d4 As Double = m5-m4 List.AddRow "JSONMBS.Convert", Format(d1 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = d1 List.AddRow "JSONMBS objects", Format(d2 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = d2 List.AddRow "JSONItem objects", Format(d3 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = d3 List.AddRow "Xojo.Data.GenerateJSON", Format(d4 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = d4 #If XojoVersion > 2020.0 List.AddRow "GenerateJSON", Format(d5 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = d5 #EndIf Dim n1 As Double = Microseconds ParseJSON_MBS1 j1 Dim n2 As Double = Microseconds ParseJSON_MBS2 j2 Dim n3 As Double = Microseconds ParseJSON_Xojo1 j3 Dim n4 As Double = Microseconds ParseJSON_Xojo2 j4 Dim n5 As Double = Microseconds #If XojoVersion > 2020.0 ParseJSON_Xojo3 j5 Dim n6 As Double = Microseconds #EndIf Dim e1 As Double = n2-n1 Dim e2 As Double = n3-n2 Dim e3 As Double = n4-n3 Dim e4 As Double = n5-n4 #If XojoVersion > 2020.0 Dim e5 As Double = n6-n5 #EndIf List.AddRow "JSONMBS.Convert", Format(e1 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = e1 List.AddRow "JSONMBS objects", Format(e2 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = e2 List.AddRow "JSONItem objects", Format(e3 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = e3 List.AddRow "Xojo.Data.ParseJSON", Format(e4 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = e4 #If XojoVersion > 2020.0 List.AddRow "ParseJSON", Format(e5 / 1000.0, "0.0")+"ms" List.CellTag(List.LastIndex,1) = e5 #EndIf End EventHandler
Function BuildJSON_MBS1() As String #Pragma DisableBackgroundTasks True Dim j() As Variant For i As Integer = 1 To kCount Dim c As New Dictionary c.Value("Key1") = "Hello World" c.Value("Key2") = True c.Value("Key3") = 123 c.Value("Key4") = 456.789 c.Value("Key5") = "6a12a4d5-e9e6-4568-afcc-34c70b24a668" c.Value("Key6") = Nil j.Append c Next Dim json As JSONMBS = JSONMBS.Convert(j) Return json.toString End Function
Function BuildJSON_MBS2() As String #Pragma DisableBackgroundTasks True Dim j As JSONMBS = JSONMBS.NewArrayNode For i As Integer = 1 To kCount Dim c As JSONMBS = JSONMBS.NewObjectNode c.AddItemToObject "Key1", JSONMBS.NewStringNode("Hello World") c.AddItemToObject "Key2", JSONMBS.NewBoolNode(True) c.AddItemToObject "Key3", JSONMBS.NewInt64Node(123) c.AddItemToObject "Key4", JSONMBS.NewNumberNode(456.789) c.AddItemToObject "Key5", JSONMBS.NewStringNode("6a12a4d5-e9e6-4568-afcc-34c70b24a668") c.AddItemToObject "Key6", JSONMBS.NewNullNode j.AddItemToArray c Next Return j.ToString End Function
Function BuildJSON_Xojo1() As String #Pragma DisableBackgroundTasks True Dim j As New JSONItem For i As Integer = 1 To kCount Dim c As New JSONItem c.Value("Key1") = "Hello World" c.Value("Key2") = True c.Value("Key3") = 123 c.Value("Key4") = 456.789 c.Value("Key5") = "6a12a4d5-e9e6-4568-afcc-34c70b24a668" c.Value("Key6") = Nil j.Append c Next Return j.ToString End Function
Function BuildJSON_Xojo2() As String #Pragma DisableBackgroundTasks True Dim j() As Variant For i As Integer = 1 To kCount Dim c As New Xojo.Core.Dictionary c.Value("Key1") = "Hello World" c.Value("Key2") = True c.Value("Key3") = 123 c.Value("Key4") = 456.789 c.Value("Key5") = "6a12a4d5-e9e6-4568-afcc-34c70b24a668" c.Value("Key6") = Nil j.Append c Next Return Xojo.Data.GenerateJSON(j) End Function
Function BuildJSON_Xojo3() As String #Pragma DisableBackgroundTasks True #If XojoVersion > 2020.0 Dim j() As Variant For i As Integer = 1 To kCount Dim c As New Dictionary c.Value("Key1") = "Hello World" c.Value("Key2") = True c.Value("Key3") = 123 c.Value("Key4") = 456.789 c.Value("Key5") = "6a12a4d5-e9e6-4568-afcc-34c70b24a668" c.Value("Key6") = Nil j.Append c Next Return GenerateJSON(j, True) #EndIf End Function
Sub ParseJSON_MBS1(json as string) #Pragma DisableBackgroundTasks True Dim jj As New JSONMBS(json) Dim j() As Variant = jj.Convert If j.Ubound <> kCount-1 Then Break End If Dim found As Integer = 0 For each c as Dictionary in j Dim s As String = c.Value("Key1") Dim b As Boolean = c.Value("Key2") Dim n As Integer = c.Value("Key3") Dim d As Double = c.Value("Key4") Dim u As String = c.Value("Key5") Dim v As Variant = c.Value("Key6") found = found + 1 Next If found <> kcount Then Break End If End Sub
Sub ParseJSON_MBS2(json as string) #Pragma DisableBackgroundTasks True Dim jj As New JSONMBS(json) If jj.ArraySize <> kCount Then Break End If Dim found As Integer = 0 Dim items() As JSONMBS = jj.ArrayItems For Each c As JSONMBS In items Dim s As String = c.Child("Key1").ValueString Dim b As Boolean = c.Child("Key2").ValueBoolean Dim n As Integer = c.Child("Key3").ValueInteger Dim d As Double = c.Child("Key4").ValueDouble Dim u As String = c.Child("Key5").ValueString Dim v As Variant =(c.Child("Key6").type = JSONMBS.kTypeNull) // isNull found = found + 1 Next If found <> kcount Then Break End If End Sub
Sub ParseJSON_Xojo1(json as string) #Pragma DisableBackgroundTasks True Dim jj As New JSONItem(json) If jj.Count <> kCount Then Break End If Dim found As Integer = 0 for i as integer = 0 to kCount-1 Dim c As JSONItem = jj.Child(i) Dim s As String = c.Value("Key1") Dim b As Boolean = c.Value("Key2") Dim n As Integer = c.Value("Key3") Dim d As Double = c.Value("Key4") Dim u As String = c.Value("Key5") Dim v As Variant = c.Value("Key6") found = found + 1 Next If found <> kcount Then Break End If End Sub
Sub ParseJSON_Xojo2(json as string) #Pragma DisableBackgroundTasks True Dim jj As Auto = xojo.data.ParseJSON(json.ToText) dim a() as auto = jj If a.Ubound <> kCount-1 Then Break End If Dim found As Integer = 0 For Each c As Xojo.Core.Dictionary In a Dim s As String = c.Value("Key1") Dim b As Boolean = c.Value("Key2") Dim n As Integer = c.Value("Key3") Dim d As Double = c.Value("Key4") Dim u As String = c.Value("Key5") Dim v As auto = c.Value("Key6") found = found + 1 Next If found <> kcount Then Break End If End Sub
Sub ParseJSON_Xojo3(json as string) #Pragma DisableBackgroundTasks True #If XojoVersion > 2020 Dim jj As Variant = ParseJSON(json) Dim a() As Variant = jj If a.Ubound <> kCount-1 Then Break End If Dim found As Integer = 0 For Each c As Dictionary In a Dim s As String = c.Value("Key1") Dim b As Boolean = c.Value("Key2") Dim n As Integer = c.Value("Key3") Dim d As Double = c.Value("Key4") Dim u As String = c.Value("Key5") Dim v As auto = c.Value("Key6") found = found + 1 Next If found <> kcount Then Break End If #EndIf End Sub
Sub Prepare() End Sub
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project

See also:

The items on this page are in the following plugins: MBS Util Plugin.


💬 Ask a question or report a problem