Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
Viteza de citire fisier
Last Updated: Mar 11 2013 23:32, Started by
horohoro
, Mar 07 2013 04:06
·
0
#1
Posted 07 March 2013 - 04:06
Stie cineva vreo metoda in care sa pot mari viteza de citire a unui fisier larg? Ma aflu intr-o bucla in care adaug la fiecare executie a ei cate 20 bytes in fisier. Problema este ca cu cat fisierul este mai larg cu atat de greu citeste. Ma folosesc de API ca sa il citesc fiindca cu functia din VB imbatranesc pana imi returneaza textul.
Orice opinii, sugestii indiferent ca vin de la incepatori sunt apreciate ;. Respect toti talentatii Edited by horohoro, 07 March 2013 - 04:06. |
#2
Posted 07 March 2013 - 05:10
Citeste mai mult de 20 bytes deodata? Cativa MB ar fi un inceput, ca de aia ai RAM in calculator...
|
#3
Posted 07 March 2013 - 06:14
Citesc tot fisierul ajunge pe la maxim 20MB apoi il folosesc sa caut un anumit text in el cu instrb()
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Any) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Const FILE_BEGIN = 0 Const FILE_SHARE_READ = &H1 Const FILE_SHARE_WRITE = &H2 Const OPEN_EXISTING = 3 Const GENERIC_READ = &H80000000 Public Function CitesteFisier(strFisier As String) As String Dim handleFisier As Long, continutBytes() As Byte Dim dimFisier As Long, Result As Long handleFisier = CreateFile(strFisier, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0) dimFisier = GetFileSize(handleFisier, 0) SetFilePointer handleFisier, 0, 0, FILE_BEGIN ReDim continutBytes(1 To dimFisier) As Byte ReadFile handleFisier, continutBytes(1), UBound(continutBytes), Result, ByVal 0& CloseHandle handleFisier CitesteFisier = StrConv(continutBytes, vbUnicode) ReDim continutBytes(0) As Byte End Function |
#5
Posted 08 March 2013 - 21:09
Functia returneaza greu cand fisierul se mareste aici este problema
<=500kb | 5-10ms <=5000kb | 100ms+ <=20000kb | 500ms+ Edited by horohoro, 08 March 2013 - 21:11. |
#6
Posted 08 March 2013 - 21:18
Nu ti se pare normal sa dureze ceva cand citesti zeci de MB de pe HDD?
|
#7
Posted 10 March 2013 - 21:56
Da mi se pare normal dar am intrebat daca este posibil sa maresc viteza de citire sau poate daca exista o alta alternativa de stocare/citire mai rapida.
|
#8
Posted 10 March 2013 - 23:30
"Viteza" in sine tine de partea de hard si numarul de procese al pc-ului. Daca nr. de procese ar fi constant, totul se rezuma la capacitatile componentelor hardware, unde, generic vorbind "marimea conteaza".
In cazul tau as incerca altceva. Daca poti opri procesul de scriere a datelor, in sensul ca "generatorul de date" poate fi oprit (ex. daca citesc datele venite de la un termometru si le primesc din 10 in 10 ms. exagerez un pic aici, ei bine voi avea la dispozitie doar acele 10 ms pentru procesarea lor, salvare in fisier, cautare valori, decizii, executii, etc). In acest caz voi spune ca "generatorul" nu poate fi oprit si trebuie sa ma incadrez in acest interval de timp. Dar daca poate fi oprit, inchizi fisierul cu datele salvate si-l redeschizi pentru citire. O alta varianta ar fi ca in momentul in care fisierul atinge anumite dimensiuni prestabilite (20Mb;40;60, etc) faci o copie a acestuia pe care o deschizi doar pentru citire(eventual cu SEEK). Si ar mai fi o problema de logica... Daca scrii datele in fisier in mod continuu, de ce cauti mereu (ca banuiesc ca vrei ceva anume) de la capat ??? Este clar ca nu ai gasit ceea ce vroiai. De ce nu cauti de la ultima valoare verificata ? Edited by nexusm, 10 March 2013 - 23:32. |
#9
Posted 11 March 2013 - 08:39
Datele pe care le scriu au ca identificatori numere aleatoare de aceea trebuie sa o iau de la inceput de fiecare data. Am incercat cu un dictionar de liste si se misca mai repede dar vreau sa testez si cu o baza de date mysql
Edited by horohoro, 11 March 2013 - 08:43. |
#10
Posted 11 March 2013 - 23:32
horohoro, on 11 martie 2013 - 08:39, said:
Datele pe care le scriu au ca identificatori numere aleatoare de aceea trebuie sa o iau de la inceput de fiecare data. Am incercat cu un dictionar de liste si se misca mai repede dar vreau sa testez si cu o baza de date mysql Problema rezolvata cu functia lui Merri http://www.vbforums.com/showthread.php?381822-Find-a-string-in-a-text-file-Fast.... |
|
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users