XIncludeFile "TreeLinkedList.pb" ;{- Speedtest ; ; #MaxElemente = 1000000 ; ; NewList List_PB.l() ; *List_NTQ = TreeLL(#NewTreeLL, 4) ; *List_NTQ_Element.LONG ; ; Time_PB_1.l = GetTickCount_() ; For a.l = 1 To #MaxElemente ; AddElement(List_PB()) ; List_PB() = a ; Next ; Time_PB_1 = GetTickCount_() - Time_PB_1 ; ; Time_NTQ_1.l = GetTickCount_() ; For a.l = 1 To #MaxElemente ; *List_NTQ_Element = TreeLL(#Add, *List_NTQ) ; *List_NTQ_Element\l = a ; Next ; Time_NTQ_1 = GetTickCount_() - Time_NTQ_1 ; ; Time_PB_2 = GetTickCount_() ; ForEach List_PB() ; a.l = List_PB() ; Next ; Time_PB_2 = GetTickCount_() - Time_PB_2 ; ; Time_NTQ_2 = GetTickCount_() ; TreeLL(#Reset, *List_NTQ) ; Repeat ; *List_NTQ_Element = TreeLL(#Next, *List_NTQ) ; If *List_NTQ_Element ; a.l = *List_NTQ_Element\l ; Else ; Break ; EndIf ; ForEver ; Time_NTQ_2 = GetTickCount_() - Time_NTQ_2 ; ; EPerSec_PB_1 = #MaxElemente * 1000 / Time_PB_1 ; EPerSec_PB_2 = #MaxElemente * 1000 / Time_PB_2 ; EPerSec_NTQ_1 = #MaxElemente * 1000 / Time_NTQ_1 ; EPerSec_NTQ_2 = #MaxElemente * 1000 / Time_NTQ_2 ; ; Zeiten.s ; Zeiten = Chr(9) + Chr(9) + "Erstellen" + Chr(9) + Chr(9) + "Auslesen" + Chr(13) ; Zeiten + "PureBasic: " + Chr(9) + Str(Time_PB_1) + " ms" + Chr(9) + Chr(9) + Str(Time_PB_2) + " ms" + Chr(13) ; Zeiten + "NicTheQuick: " + Chr(9) + Str(Time_NTQ_1) + " ms" + Chr(9) + Chr(9) + Str(Time_NTQ_2) + " ms" + Chr(13) ; Zeiten + Chr(13) ; Zeiten + "PureBasic: " + Chr(9) + Str(EPerSec_PB_1) + " El./s" + Chr(9) + Str(EPerSec_PB_2) + " El./s" + Chr(13) ; Zeiten + "NicTheQuick: " + Chr(9) + Str(EPerSec_NTQ_1) + " El./s" + Chr(9) + Str(EPerSec_NTQ_2) + " El./s" + Chr(13) ; ; MessageRequester("Zeiten", Zeiten) ; SetClipboardText(Zeiten) ;} ;End Repeat *LL = TreeLL(#TLL_NewTreeLL, SizeOf(STRING)) For a.l = 1 To 100000 *Value.STRING = TreeLL(#TLL_Add, *LL) *Value\s = "sadfasdfwoefasdfnweaöfdnjsafnweaönfdnownefan" Next If MessageRequester("Liste gefüllt", "Wollen Sie nun das Testen beenden?", #MB_YESNO) = #IdYes : Break : EndIf TreeLL(#TLL_FreeTreeLL, *LL) If MessageRequester("Liste gelöscht", "Wollen Sie nun das Testen beenden?", #MB_YESNO) = #IdYes : Break : EndIf ForEver End ;{- Beispiel Structure test a.l b.w c.s EndStructure Tree.l = TreeLL(#TLL_NewTreeLL, SizeOf(test)) *testelement.test For a.l = 1 To 3 *testelement = TreeLL(#TLL_Add, Tree) *testelement\b = a *testelement\c = "|-----" TreeLL(#TLL_NewChild, Tree) For b.l = 1 To 3 *testelement = TreeLL(#TLL_Add, Tree) *testelement\b = b *testelement\c = "| |-----" TreeLL(#TLL_NewChild, Tree) For c.l = 1 To 3 *testelement = TreeLL(#TLL_Add, Tree) *testelement\b = c *testelement\c = "| | |-----" Next TreeLL(#TLL_Parent, Tree) Next TreeLL(#TLL_Parent, Tree) Next Debug "Elementanzahl: " + Str(TreeLL(#TLL_CountElements, Tree)) Debug " " Debug "Speichere die Liste in der Datei 'C:\TestTreeLL.dat' ab..." If CreateFile(0, "c:\testLL.dat") If TreeLL(#TLL_SaveTreeLL, Tree) If TreeLL(@"lws", Tree) ;Struktur 'test' -> siehe oben! Ein Long, ein Word und ein String also "lws" Debug "...fertig." Else Debug "...ungültiges TreeLL-Handle." EndIf Else Debug "...ungültiges TreeLL-Handle." EndIf CloseFile(0) EndIf Debug " " Debug "Lösche alle Elemente mit der Nummer 2:" TreeLL(#TLL_ResetAll, Tree) ;Durchsuche die Liste nach Einträgen mit der Nummer 2 und lösche diese While TreeLL(#TLL_NextEx, Tree) *testelement = TreeLL(#TLL_GetPointer, Tree) If *testelement\b = 2 If TreeLL(#TLL_Delete, Tree) Debug "- gelöscht" EndIf EndIf Wend Debug " " Debug "Elementanzahl: " + Str(TreeLL(#TLL_CountElements, Tree)) Debug " " Debug "Zeige die TreeLL an:" TreeLL(#TLL_ResetAll, Tree) While TreeLL(#TLL_NextEx, Tree) *testelement = TreeLL(#TLL_GetPointer, Tree) Debug *testelement\c + " (Nummer: " + Str(*testelement\b) + ") [Childs: " + Str(TreeLL(#TLL_CountChilds, Tree)) + "]" Wend Debug " " Debug "Lösche die TreeLL..." If TreeLL(#TLL_FreeTreeLL, Tree) Debug "...fertig." Else Debug "...ungültiges TreeLL-Handle." EndIf Debug " " Debug "Lies die TreeLL aus 'C:\TestTreeLL.dat' wieder ein..." If ReadFile(0, "c:\testll.dat") Tree = TreeLL(#TLL_LoadTreeLL, 0) If Tree Debug "...fertig." Else Debug "...Fehler." EndIf CloseFile(0) EndIf Debug " " Debug "Elementanzahl: " + Str(TreeLL(#TLL_CountElements, Tree)) Debug " " Debug "Zeige die TreeLL an:" TreeLL(#TLL_ResetAll, Tree) While TreeLL(#TLL_NextEx, Tree) *testelement = TreeLL(#TLL_GetPointer, Tree) *testelement\c = *testelement\c Debug *testelement\c + " (Nummer: " + Str(*testelement\b) + ") [Childs: " + Str(TreeLL(#TLL_CountChilds, Tree)) + "]" Wend;} End ; jaPBe Version=2.5.4.22 ; FoldLines=00020039004A00AD ; Build=0 ; Language=0x0000 Language Neutral ; FirstLine=0 ; CursorPosition=72 ; EnableAsm ; ExecutableFormat=Windows ; DontSaveDeclare ; EOF