Example: /DataTypes/StringSet test

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

/DataTypes/StringSet test


Required plugins for this example: MBS DataTypes Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /DataTypes/StringSet test

This example is the version from Mon, 5th Apr 2015.

Project "StringSet test.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control list Inherits ListBox
ControlInstance list Inherits ListBox
End Control
EventHandler Sub Open() 'Dim d as New MessageDialog //declare the MessageDialog object 'Dim b as MessageDialogButton //for handling the result 'd.icon=MessageDialog.GraphicCaution //display warning icon 'd.ActionButton.Caption="Run" 'd.CancelButton.Visible= True //show the Cancel button 'd.Message="Do you want to start this benchmark?" 'd.Explanation="It can take 10 minutes to complete." ' 'b=d.ShowModal //display the dialog 'Select Case b //determine which button was pressed. 'Case d.ActionButton '//user pressed Save 'Case d.CancelButton '//user pressed Cancel 'Return 'End select testString testVariant testInteger End EventHandler
Protected Sub testInteger() const max=1000000 #pragma DisableBackgroundTasks #pragma DisableAutoWaitCursor dim dic as new Dictionary dim set as new IntegerOrderedSetMBS dim hashset as new IntegerHashSetMBS dim i as integer dim keys(max) as integer dim s as Integer dim k as integer dim tset,tdic,thashset as integer me.title="Working on Integers" me.show list.AddRow "" list.addrow "keys are integer" List.AddRow "max="+str(max) // prepare test data for i=0 to max keys(i)=i next keys.Shuffle // fill tset=ticks for i=0 to max set.insert(keys(i)) next tset=ticks-tset thashset=ticks for i=0 to max hashset.insert(keys(i)) next thashset=ticks-thashset tdic=ticks for i=0 to max dic.value(keys(i))=True next tdic=ticks-tdic list.addrow "add values" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tset/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashset/60.0,"0.0")+"s" // haskey tset=ticks for i=0 to max call set.lookup(keys(i)) next tset=ticks-tset tdic=ticks for i=0 to max call dic.haskey(keys(i)) next tdic=ticks-tdic thashset=ticks for i=0 to max call hashset.lookup(keys(i)) next thashset=ticks-thashset list.addrow "using haskey/lookup" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tset/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashset/60.0,"0.0")+"s" // get keys tset=ticks for i=0 to max k=set.Key(i) next tset=ticks-tset tdic=ticks for i=0 to max s=dic.Key(i) next tdic=ticks-tdic thashset=ticks for i=0 to max k=hashset.Key(i) next thashset=ticks-thashset list.addrow "get keys" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tset/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashset/60.0,"0.0")+"s" // get all keys const maxx=100 dim temp(-1) as string dim tempv(-1) as Variant dim tempi(-1) as integer tset=ticks for i=0 to maxx tempi=set.Keys next tset=ticks-tset tdic=ticks for i=0 to maxx tempv=dic.Keys next tdic=ticks-tdic thashset=ticks for i=0 to maxx tempi=hashset.Keys next thashset=ticks-thashset list.addrow "get all keys" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tset/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashset/60.0,"0.0")+"s" System.DebugLog "hashset.BinCount: "+str(hashset.BinCount) me.title="Finished." End Sub
Protected Sub testString() const max=100000 #pragma DisableBackgroundTasks #pragma DisableAutoWaitCursor dim dic as new Dictionary dim seti as new StringOrderedSetMBS(false) // case insensitive dim sets as new StringOrderedSetMBS(true) // case sensitive dim hashseti as new StringHashSetMBS(false)// case insensitive dim hashsets as new StringHashSetMBS(true) // case sensitive dim i as integer dim keys(max) as string dim s as string dim tsets,tseti,tdic,thashsets,thashseti as integer me.title="Working on Strings" me.show list.addrow "keys are strings" List.AddRow "max="+str(max) // prepare test data for i=0 to max s=str(i) keys(i)=s next keys.Shuffle // fill tsets=ticks for i=0 to max sets.insert(keys(i)) next tsets=ticks-tsets thashsets=ticks for i=0 to max hashsets.insert(keys(i)) next thashsets=ticks-thashsets tseti=ticks for i=0 to max seti.insert(keys(i)) next tseti=ticks-tseti thashseti=ticks for i=0 to max hashseti.insert(keys(i)) next thashseti=ticks-thashseti tdic=ticks for i=0 to max dic.value(keys(i))=nil next tdic=ticks-tdic list.addrow "add values" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tseti/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashseti/60.0,"0.0")+"s" list.cell(list.lastIndex,4)=format(tsets/60.0,"0.0")+"s" list.cell(list.lastIndex,5)=format(thashsets/60.0,"0.0")+"s" // lookup tdic=ticks for i=0 to max call dic.haskey(keys(i)) next tdic=ticks-tdic tseti=ticks for i=0 to max call seti.lookup(keys(i)) next tseti=ticks-tseti thashseti=ticks for i=0 to max call hashseti.lookup(keys(i)) next thashseti=ticks-thashseti tsets=ticks for i=0 to max call sets.lookup(keys(i)) next tsets=ticks-tsets thashsets=ticks for i=0 to max call hashsets.lookup(keys(i)) next thashsets=ticks-thashsets list.addrow "using haskey/lookup" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tseti/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashseti/60.0,"0.0")+"s" list.cell(list.lastIndex,4)=format(tsets/60.0,"0.0")+"s" list.cell(list.lastIndex,5)=format(thashsets/60.0,"0.0")+"s" // get keys tdic=ticks for i=0 to max s=dic.Key(i) next tdic=ticks-tdic tsets=ticks for i=0 to max s=sets.Key(i) next tsets=ticks-tsets thashseti=ticks for i=0 to max s=hashseti.Key(i) next thashseti=ticks-thashseti tseti=ticks for i=0 to max s=seti.Key(i) next tseti=ticks-tseti thashsets=ticks for i=0 to max s=hashsets.Key(i) next thashsets=ticks-thashsets list.addrow "get keys" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tseti/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashseti/60.0,"0.0")+"s" list.cell(list.lastIndex,4)=format(tsets/60.0,"0.0")+"s" list.cell(list.lastIndex,5)=format(thashsets/60.0,"0.0")+"s" // get all keys const maxx=100 dim temp(-1) as string dim tempv(-1) as Variant tdic=ticks for i=0 to maxx tempv=dic.Keys next tdic=ticks-tdic tsets=ticks for i=0 to maxx temp=sets.Keys next tsets=ticks-tsets thashsets=ticks for i=0 to maxx temp=hashsets.Keys next thashsets=ticks-thashsets tseti=ticks for i=0 to maxx temp=seti.Keys next tseti=ticks-tseti thashseti=ticks for i=0 to maxx temp=hashseti.Keys next thashseti=ticks-thashseti list.addrow "get all keys" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tseti/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashseti/60.0,"0.0")+"s" list.cell(list.lastIndex,4)=format(tsets/60.0,"0.0")+"s" list.cell(list.lastIndex,5)=format(thashsets/60.0,"0.0")+"s" System.DebugLog "hashsets.BinCount: "+str(hashsets.BinCount) System.DebugLog "hashseti.BinCount: "+str(hashseti.BinCount) me.title="Finished." End Sub
Protected Sub testVariant() const max=1000000 #pragma DisableBackgroundTasks #pragma DisableAutoWaitCursor dim dic as new Dictionary dim sets as new VariantOrderedSetMBS(true) dim seti as new VariantOrderedSetMBS(False) dim hashsets as new VariantHashSetMBS(true) dim hashseti as new VariantHashSetMBS(False) dim i as integer dim keys(max) as Variant dim s as Variant dim tsets,tseti, tdic, thashsets, thashseti as integer me.title="Working on Variant" me.show list.AddRow "" list.addrow "keys are variant" List.AddRow "max="+str(max) // prepare test data for i=0 to max keys(i)=i next keys.Shuffle // fill tseti=ticks for i=0 to max seti.insert(keys(i)) next tseti=ticks-tseti thashsets=ticks for i=0 to max hashsets.insert(keys(i)) next thashsets=ticks-thashsets tsets=ticks for i=0 to max sets.insert(keys(i)) next tsets=ticks-tsets thashseti=ticks for i=0 to max hashseti.insert(keys(i)) next thashseti=ticks-thashseti tdic=ticks for i=0 to max dic.value(keys(i))=True next tdic=ticks-tdic list.addrow "add values" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tseti/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashseti/60.0,"0.0")+"s" list.cell(list.lastIndex,4)=format(tsets/60.0,"0.0")+"s" list.cell(list.lastIndex,5)=format(thashsets/60.0,"0.0")+"s" // haskey/lookup tdic=ticks for i=0 to max call dic.haskey(keys(i)) next tdic=ticks-tdic tseti=ticks for i=0 to max call seti.lookup(keys(i)) next tseti=ticks-tseti thashseti=ticks for i=0 to max call hashseti.lookup(keys(i)) next thashseti=ticks-thashseti tsets=ticks for i=0 to max call sets.lookup(keys(i)) next tsets=ticks-tsets thashsets=ticks for i=0 to max call hashsets.lookup(keys(i)) next thashsets=ticks-thashsets list.addrow "using haskey/lookup" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tseti/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashseti/60.0,"0.0")+"s" list.cell(list.lastIndex,4)=format(tsets/60.0,"0.0")+"s" list.cell(list.lastIndex,5)=format(thashsets/60.0,"0.0")+"s" // get keys tdic=ticks for i=0 to max s=dic.Key(i) next tdic=ticks-tdic tsets=ticks for i=0 to max s=sets.Key(i) next tsets=ticks-tsets thashsets=ticks for i=0 to max s=hashsets.Key(i) next thashsets=ticks-thashsets tseti=ticks for i=0 to max s=seti.Key(i) next tseti=ticks-tseti thashseti=ticks for i=0 to max s=hashseti.Key(i) next thashseti=ticks-thashseti list.addrow "get keys" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tseti/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashseti/60.0,"0.0")+"s" list.cell(list.lastIndex,4)=format(tsets/60.0,"0.0")+"s" list.cell(list.lastIndex,5)=format(thashsets/60.0,"0.0")+"s" // get all keys const maxx=100 dim temps(-1) as string dim tempv(-1) as variant tseti=ticks for i=0 to maxx tempv=seti.Keys next tseti=ticks-tseti tsets=ticks for i=0 to maxx tempv=sets.Keys next tsets=ticks-tsets thashsets=ticks for i=0 to maxx tempv=hashsets.Keys next thashsets=ticks-thashsets thashseti=ticks for i=0 to maxx tempv=hashseti.Keys next thashseti=ticks-thashseti tdic=ticks for i=0 to maxx tempv=dic.Keys next tdic=ticks-tdic list.addrow "get all keys" list.cell(list.lastIndex,1)=format(tdic/60.0,"0.0")+"s" list.cell(list.lastIndex,2)=format(tseti/60.0,"0.0")+"s" list.cell(list.lastIndex,3)=format(thashseti/60.0,"0.0")+"s" list.cell(list.lastIndex,4)=format(tsets/60.0,"0.0")+"s" list.cell(list.lastIndex,5)=format(thashsets/60.0,"0.0")+"s" System.DebugLog "hashsets.BinCount: "+str(hashsets.BinCount) System.DebugLog "hashseti.BinCount: "+str(hashseti.BinCount) me.title="Finished." End Sub
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project

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


💬 Ask a question or report a problem