WriteByte(1,ReadByte(0)) beschleunigen?

Fragen und Bugreports zur PureBasic 4.0-Beta.
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Mit gebufferten Files einen Speedtest zu machen ist eher ungeschickt.

FileBuffersSize(#Datei, 0) solltest du schon machen.
Optimismus ist ein Mangel an Information.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Die aktuelle Übertragungsrate mit nem Buffer von 0 anzeigen ist viel ungeschickter.
Wenns um die Messung der Geschwindigkeit versch. Vorgehensweisen geht,
ist es Okay, aber für die Anzeige der momentanen Übertragungszeit, wie es
viele Dateimanager machen, macht ein Buffer von 0 den Dateimanager eher
nutzlos. :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Hellhound66
Beiträge: 476
Registriert: 23.03.2005 23:19

Beitrag von Hellhound66 »

Is logisch. Weiss auch nicht, wie ich auf Speedtest kam.. :freak:
Optimismus ist ein Mangel an Information.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

In diesem Code: http://www.purebasic.fr/german/viewtopi ... 1&start=20
könnte man mit ElapsedMilliseconds() in der For-Next schleife so eine
Schätzung berechnen. Anstatt Progressebar zu setzen dann vielleicht mit
CallFunctionFast eine Callback-Procedure aktualisieren.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
mknjc
Beiträge: 217
Registriert: 09.09.2006 12:59

Beitrag von mknjc »

So ich hab das beispiel ein wenig verändert.

Ganz so klasse ist es noch nich vieleicht findet jemand was besseres.

Code: Alles auswählen

Procedure CopyFileEx(Source.s, Dest.s, Progressbar.l = #PB_Any, Datenr.l = #PB_Any, BlockSize.l = 4096) 
    Protected FileSource.l, FileDest.l, Mem.l, Size.q, Bloecke.q, Rest.q, i.l, Prozent.f, Zeit.l, Datenrate.l
    
    If BlockSize <= 0 : BlockSize = 1 : EndIf 
    
    FileSource = ReadFile(#PB_Any, Source) 
    FileDest = CreateFile(#PB_Any, Dest) 
        
    Mem = AllocateMemory(BlockSize) 
    
    If FileSource And FileDest And Mem 
        FileBuffersSize(FileSource, BlockSize) 
        FileBuffersSize(FileDest, BlockSize) 
        
        Size = Lof(FileSource) 
        Bloecke = Size / BlockSize 
        Rest = Size % BlockSize 
        
        Zeit = ElapsedMilliseconds()
        
        For i = 1 To Bloecke 
            ReadData(FileSource, Mem, BlockSize) 
            WriteData(FileDest, Mem, BlockSize) 
            
             Prozent = ((BlockSize * i) / Size) * 100 
            If Progressbar > #PB_Any And IsGadget(Progressbar) 
                SetGadgetState(Progressbar, Prozent) 
            EndIf 
             
            If (timeGetTime_() - Zeit) / 1000
                Datenrate = ((i * BlockSize) / ((ElapsedMilliseconds() - Zeit) / 1000)) / 1048576
                If Datenr > #PB_Any And IsGadget(Datenr) 
                    SetGadgetText(Datenr, Str(Datenrate)) 
                EndIf
            EndIf
        Next 
        
        ReadData(FileSource, Mem, Rest) 
        WriteData(FileDest, Mem, Rest) 
        If Progressbar > #PB_Any And IsGadget(Progressbar) 
            SetGadgetState(Progressbar, 100) 
        EndIf 
        
        FreeMemory(Mem) 
        CloseFile(FileSource) 
        CloseFile(FileDest) 
        
        If FileSize(Dest) > 0 
            ProcedureReturn #True 
        EndIf 
    EndIf 
    
    ProcedureReturn #False 
EndProcedure 

If Not OpenWindow(0, #PB_Ignore, 0, 300, 135, "CopyFileEx") : End : EndIf 
If Not CreateGadgetList(WindowID(0)) : End : EndIf 

ProgressBarGadget(0, 10, 10, 280, 40, 0, 100, #PB_ProgressBar_Smooth)
TextGadget(1, 10, 60, 280, 20, "", #PB_Text_Center)
ButtonGadget(2, 120, 90, 60, 25, "Start") 
Repeat 
    Select WaitWindowEvent() 
        Case #PB_Event_CloseWindow : Break 
        Case #PB_Event_Gadget 
            If EventGadget() = 2 
                DisableGadget(1, #True) 
                CopyFileEx("/home/mknjc/Progen/Bastelspass/Riesendatei", GetTemporaryDirectory() + "Testdata", 0, 1, 102400) 
                DisableGadget(1, #False) 
            EndIf 
    EndSelect 
ForEver
Mfg mknjc
Ich nutze PureBasic 4.02 unter Linux und Windows.

Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
mknjc
Beiträge: 217
Registriert: 09.09.2006 12:59

Beitrag von mknjc »

[Gelöscht]
Zuletzt geändert von mknjc am 16.11.2006 16:38, insgesamt 1-mal geändert.
Ich nutze PureBasic 4.02 unter Linux und Windows.

Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
Benutzeravatar
HeX0R
Beiträge: 2959
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Beitrag von HeX0R »

Bin ja mal gespannt wie lange es dauern wird, bis auch in die letzte Ecke der User durchgedrungen ist, dass man eigene Beiträge auch löschen kann.
Sehr sinnvoll bei Doppelpostings wie hier.

Allerdings geht das auch nur solange kein anderer Depp (also in diesem Fall ich) darauf antwortet.

Ein sehr sinnvolles aber leider ungenutztes Feature dieses Boards.

Oder war es nur eine (ebenso typische) "Absenden-Klicken-und-Browser-Schliessen"-Tat ?
mknjc
Beiträge: 217
Registriert: 09.09.2006 12:59

Beitrag von mknjc »

Ich hasse Wlan :cry:

Das kommt davon wen man schreibt und dann abhaut und nich guckt was man vorn mist verzapft hat.

Schullilung :oops:


Mfg mknjc
Ich nutze PureBasic 4.02 unter Linux und Windows.

Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
Gesperrt