Hallo,
Ich habe eine Frage bezüglich der Zugriffszeit und Speicherverbrauch.
Folgende Situation:
eine definierte Anzahl an Datensätze mit einer definierten Anzahl an Daten
(als beispiel 10 sätze a 4 daten)
Die Datensätze sollen zum einfachen Zugreifen mit einer Nummer angesprochen werden(d(1..n)).
Was ist nun schneller?
LinkedList? zugriff via SelectElement(1..n)
Array? zugriff via d(1..n,1..4)
Die Daten sind immer in der gleichen Reihenfolge und werden zum Programmstart eingelesen,
der Inhalt kann, je nach Aufgabe, anders sein, die Bedeutung ist allerdings immer gleich!
Was ist nun schneller und benötigt weniger Speicherplatz?
Dank im Vorraus
Olaf
Zugriffszeit Liste Array
Zugriffszeit Liste Array
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Zugriffszeit Liste Array
Arrays sind immer schneller und platzsparender, wenn du mit einem Index darauf zugreifen willst.
LinkedLists werden erst dann sinnvoll, wenn du häufig Daten an verschiedenen Stellen hinzufügen oder löschen musst.
LinkedLists werden erst dann sinnvoll, wenn du häufig Daten an verschiedenen Stellen hinzufügen oder löschen musst.
Re: Zugriffszeit Liste Array
Merci
nun, die Daten sind static, so das principiell nur lesend darauf zugegriffen wird
aussnahne ist ein eventuelles einstellen
(zb wie pb-Ide die farben ...)
es sind max 10/11 Sätze, also Überschaubar
noch 'ne andere Frage:
ich möchte einige Daten zur Laufzeit sammeln und in eine Structure speichern,
die dann an anderer Stelle analysiert werden sollen.
da dies sehr oft geschehen soll, denke ich für's analysieren an einen Thread
Die daten werden in einem CallBack, der mittels winapi erstellt werden soll, gesammelt.
kann ich Mutex in einem CallBack setzen?
Olaf
nun, die Daten sind static, so das principiell nur lesend darauf zugegriffen wird
aussnahne ist ein eventuelles einstellen
(zb wie pb-Ide die farben ...)
es sind max 10/11 Sätze, also Überschaubar
noch 'ne andere Frage:
ich möchte einige Daten zur Laufzeit sammeln und in eine Structure speichern,
die dann an anderer Stelle analysiert werden sollen.
da dies sehr oft geschehen soll, denke ich für's analysieren an einen Thread
Die daten werden in einem CallBack, der mittels winapi erstellt werden soll, gesammelt.
kann ich Mutex in einem CallBack setzen?
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Zugriffszeit Liste Array
Du must sogar mit Mutex deine Arrays und Listen selber schützen, wenn dies aus diversen Thread bearbeitet werden.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Zugriffszeit Liste Array
Ja nee is klarmk-soft hat geschrieben:Du must sogar mit Mutex deine Arrays und Listen selber schützen, wenn dies aus diversen Thread bearbeitet werden.
Frage is nur ob das in einem CallBack auch geht?
(Kein BindEvent(),sondern
Code: Alles auswählen
Procedure Callback(hWnd, uMsg, wParam, lParam)
Protected result
Protected *msgf.MSGFILTER
Protected POINT.POINT
Protected char
Protected lineindex
Protected colindex
Protected col
Protected row
Result = #PB_ProcessPureBasicEvents
Select uMsg
Case #WM_NOTIFY
*msgf=lParam
Select *msgf\NMHDR\code
Case #EN_MSGFILTER
Select *msgf\msg
Case #WM_LBUTTONUP, #WM_KEYUP
GetCaretPos_(@POINT)
char = SendMessage_(GadgetID(1), #EM_CHARFROMPOS, 0, @POINT)
lineindex = SendMessage_(GadgetID(1), #EM_LINEFROMCHAR, char, 0)
colindex = SendMessage_(GadgetID(1), #EM_LINEINDEX, lineindex, 0)
col = char-colindex
row = lineindex ;+ 1
Debug "(" + Str(col) + ", " + Str(row) + ")"+","+colindex
EndSelect
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
evMask = SendMessage_(GadgetID(1), #EM_GETEVENTMASK, 0, 0)
SendMessage_(GadgetID(1), #EM_SETEVENTMASK, 0, evMask | #ENM_KEYEVENTS | #ENM_MOUSEEVENTS )
SetWindowCallback(@Callback())
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
Re: Zugriffszeit Liste Array
Die Callback läuft im MainScope. Also wo der WaitWindowEvent aufgerufen wird.
Möchtest du Daten auch im Thread auslesen, must du diese mit Mutex schützen.
Möchtest du Daten auch im Thread auslesen, must du diese mit Mutex schützen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Zugriffszeit Liste Array
OK
Danke
Olaf
Danke
Olaf
Unsinnige Anweisungen von Seiten des Chef's lösen grundsätzlich ein "Syntax Error" bei mir aus
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic
OS=Windows 11
PB=5.31/5.73/6 <> BlitzPlus/Blitz3D <> FreeBasic